每次尝试从caught segfault
包(1.0.0)运行任何绘图函数时,我都会收到ggplot2
错误。我已经使用qplot
,geom_dotplot
,geom_histogram
等尝试了此操作。来自包的数据(例如diamonds
或economics
)工作正常。
我在Mac OS 10.9.4(最新版本)和R 3.1.1(也是最新版本)上运行。我从标准的R GUI,RStudio和从命令行使用R时得到了同样的错误。该命令将显示默认图形设备(Quartz for R GUI和命令行),但也会显示终端错误。
library(ggplot2)
qplot(1:10)
给我错误:
*** caught segfault ***
address 0x18, cause 'memory not mapped'
Traceback:
1: .Call("plyr_split_indices", PACKAGE = "plyr", group, n)
2: split_indices(scale_id, n)
3: scale_apply(layer_data, x_vars, scale_train, SCALE_X, panel$x_scales)
4: train_position(panel, data, scale_x(), scale_y())
5: ggplot_build(x)
6: print.ggplot(list(data = list(), layers = list(<environment>), scales = <S4 object of class "Scales">, mapping = list(x = 1:3), theme = list(), coordinates = list(limits = list(x = NULL, y = NULL)), facet = list(shrink = TRUE), plot_env = <environment>, labels = list(x = "1:3", y = "count")))
7: print(list(data = list(), layers = list(<environment>), scales = <S4 object of class "Scales">, mapping = list(x = 1:3), theme = list(), coordinates = list( limits = list(x = NULL, y = NULL)), facet = list(shrink = TRUE), plot_env = <environment>, labels = list(x = "1:3", y = "count")))
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
这是我的会话信息:
R version 3.1.1 (2014-07-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] graphics grDevices utils datasets stats methods base
other attached packages:
[1] ggplot2_1.0.0 marelac_2.1.3 seacarb_3.0 shape_1.4.1 beepr_1.1 birk_1.1
loaded via a namespace (and not attached):
[1] audio_0.1-5 colorspace_1.2-4 digest_0.6.4 grid_3.1.1 gtable_0.1.2
[6] MASS_7.3-34 munsell_0.4.2 plyr_1.8.1 proto_0.3-10 Rcpp_0.11.2
[11] reshape2_1.4 scales_0.2.4 stringr_0.6.2 tools_3.1.1
我从其他人那里收集到这是某种内存问题,但即使我有超过2 GB的可用内存空间,也会出现此错误。我知道这是一个广泛使用的软件包,所以当然这对每个人都没有发生,但为什么它会发生在我身上呢?有谁知道我能做些什么来解决这个问题?
答案 0 :(得分:39)
如果其他人在将来遇到此问题或类似问题,我会向软件包维护者发送错误报告,他建议卸载所有已安装的软件包并重新开始。我接受了他的建议并且有效!
ip <- installed.packages()
pkgs.to.remove <- ip[!(ip[,"Priority"] %in% c("base", "recommended")), 1]
sapply(pkgs.to.remove, remove.packages)
答案 1 :(得分:2)
这不是这个问题的答案,但它可能对某人有帮助。 (灵感来自user1310503。谢谢!)
我正在处理一个带有三个cols的data.frame df:col1,col2,col3。 最初,
df =data.frame(col1=character(),col2=numeric(),col3=numeric(),stringsAsFactors = F)
在此过程中,rbind多次使用,例如:
aList<-list(col1="aaa", col2 = "123", col3 = "234")
dfNew <- as.data.frame(aList)
df <- rbind(df, dfNew)
最后,df通过data.table :: fwrite
写入文件data.table::fwrite(x = df, file = fileDF, append = FALSE, row.names = F, quote = F, showProgress = T)
df有5973行和3列。 “抓住段错误”总是会发生:
address 0x1, cause 'memory not mapped'.
此问题的解决方案是:
aList<-list(col1=as.character("aaa"), col2 = as.numeric("123"), col3 = as.numeric("234"))
dfNew <- as.data.frame(aList)
dfNew$col1 <- as.characer(dfNew$col1)
dfNew$col2 <- as.numeric(dfNew$col2)
dfNew$col3 <- as.numeric(dfNew$col3)
df <- rbind(df, dfNew)
然后这个问题就解决了。可能的原因是cols的类别不同。
答案 2 :(得分:1)
这不是这个问题的答案,但它可能对某些人有用。当我pdf
创建PDF图形设备然后使用plot
时,我遇到了段错误。这种情况发生在R 2.15.3,3.2.4和一个或两个其他版本上,运行在Scientific Linux版本6.7上。我尝试过很多不同的事情,但我能让它发挥作用的唯一方法是:(a)使用png
或tiff
代替pdf
,或者(b)保存大.RData
}文件,然后使用一个完全独立的R程序来创建图形。