【发布时间】:2017-04-18 09:10:45
【问题描述】:
我目前正在 Unix 环境中使用 R 处理大量数据:
nrow = 32 793 730
ncol = 17
脚本执行的任务是将数据加载到 R 中,选择一定数量的变量以及使用包 data.table 和 RDS 格式创建其他变量。
在我运行这行代码之前一切顺利:
all.RDS <- file[ ,`:=`(TIME=ifelse(TIME==100000, "10:00",
ifelse(nchar(TIME)==5,
paste0("0",substr(TIME,1,1),
":",substr(TIME,2,3)),
paste0(substr(TIME,1,2),":",
substr(TIME,3,4)))))]
all.RDS[,`:=`(DATETIME=paste0(format(DATE,format="%d%b%Y"),":",TIME))]
此行仅用于将时间变量从格式 100000 转换为格式 10:00:00。但是,我收到错误
错误:来自 C 堆栈溢出的段错误
我应该生成一个大约 600 行和 5800 列的 data.table。 根据我在该平台相关页面中找到的答案,我尝试了几件事: segfault from C stack overflow 和segfault from C stack overflow in R using data.table。
我已尝试重新加载软件包,以防安装损坏。 我不认为这是空间问题。该脚本是在 Windows 环境(R 3.2.2)下开发的,这行代码在那里运行良好。这似乎与我在 Unix 环境(R 3.2.0)中运行脚本有关。但是,这没有任何意义,因为我的 Unix 环境在计算能力和可用内存方面比我的 Windows 环境强大得多。
我显然受限于必须使用 R 和 Unix 来开发我的解决方案这一事实。
亲爱的社区,你知道这个问题的解决方案吗?
非常感谢!
【问题讨论】:
-
尊敬的社区,如果有人对此有所了解,那将是非常有帮助的。有什么想法吗?
标签: r unix data.table