按顺序加载“xlsx”和“插入符号”时,R 因分段错误而意外死亡
Posted
技术标签:
【中文标题】按顺序加载“xlsx”和“插入符号”时,R 因分段错误而意外死亡【英文标题】:R dies unexpectedly with segmentation fault when loading 'xlsx' and 'caret' in that order 【发布时间】:2017-12-14 14:01:14 【问题描述】:当我加载xlsx
后跟caret
时,R
与segmentation fault
一起死掉。
> library("xlsx")
Loading required package: rJava
Loading required package: xlsxjars
> library(caret)
Loading required package: lattice
Loading required package: ggplot2
Segmentation fault (core dumped)
但是,如果我先加载caret
,然后加载xlsx
,R 可以正常工作。
> library(caret)
Loading required package: lattice
Loading required package: ggplot2
> library("xlsx")
Loading required package: rJava
Loading required package: xlsxjars
>
知道可能出了什么问题吗?
更新:
OS: CentOS 6.9
R: 3.2.5
R configured with:
./configure --enable-R-shlib CFLAGS=-fPIC --with-cairo --with-libpng --with-jpeglib --with-libtiff --with-system-zlib --with-system-pcre --with-system-xz --with-tcltk
devtools.SessionInfo
输出
> sessionInfo()
R version 3.2.5 (2016-04-14)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: CentOS release 6.9 (Final)
locale:
[1] LC_CTYPE=en_US.utf8 LC_NUMERIC=C
[3] LC_TIME=en_US.utf8 LC_COLLATE=en_US.utf8
[5] LC_MONETARY=en_US.utf8 LC_MESSAGES=en_US.utf8
[7] LC_PAPER=en_US.utf8 LC_NAME=en_US.utf8
[9] LC_ADDRESS=en_US.utf8 LC_TELEPHONE=en_US.utf8
[11] LC_MEASUREMENT=en_US.utf8 LC_IDENTIFICATION=en_US.utf8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] randomForest_4.6-12 class_7.3-14 xlsx_0.5.7
[4] xlsxjars_0.6.1 rJava_0.9-8 MASS_7.3-47
[7] TTR_0.23-1 caret_6.0-76 ggplot2_2.2.0
[10] lattice_0.20-34 devtools_1.13.2
loaded via a namespace (and not attached):
[1] Rcpp_0.12.8 nloptr_1.0.4 plyr_1.8.4 iterators_1.0.8
[5] tools_3.2.5 xts_0.10-0 digest_0.6.10 lme4_1.1-12
[9] memoise_1.0.0 tibble_1.2 nlme_3.1-128 gtable_0.2.0
[13] mgcv_1.8-16 Matrix_1.2-7.1 foreach_1.4.3 parallel_3.2.5
[17] SparseM_1.74 withr_1.0.2 stringr_1.1.0 MatrixModels_0.4-1
[21] stats4_3.2.5 grid_3.2.5 nnet_7.3-12 minqa_1.2.4
[25] reshape2_1.4.2 car_2.1-3 magrittr_1.5 scales_0.4.1
[29] codetools_0.2-15 ModelMetrics_1.1.0 splines_3.2.5 assertthat_0.1
[33] pbkrtest_0.4-6 colorspace_1.3-1 quantreg_5.29 stringi_1.1.2
[37] lazyeval_0.2.0 munsell_0.4.3 zoo_1.7-13
【问题讨论】:
@Eric 有趣的评论。我有四个问题。 1. 您能否详细说明 xlsx 如何毒化配置以防止插入符号加载?例如,它将更改哪些参数以导致加载插入符号的问题。 2. 这类问题是否有解决方案,或者由于 R 设计内部的一些内在缺陷而无法解决? 3、如果可以修复,R社区的开发者知道这个问题吗?他们有任何修复它的计划吗?如果 R 不好,那么您建议用哪种语言来替换 R?非常感谢。 【参考方案1】:如果有人遇到这个问题,我可以使用 XLSX 的开发版修复它。对我来说这是更新到 10.13.5 后的问题
devtools::install_github('dragua/xlsx', ref='7ed97ff')
那个库对我有用。奇怪的是我现在遇到了这个问题,在许多其他人报告 Ubuntu 问题整整 11 个月之后。
【讨论】:
以上是关于按顺序加载“xlsx”和“插入符号”时,R 因分段错误而意外死亡的主要内容,如果未能解决你的问题,请参考以下文章
使用混淆矩阵和插入符号统计的灵敏度和特异性的零 R 模型计算
简单的 C++ OpenCV imshow 示例因分段错误而崩溃