当measure.vars包含不在data.table中的变量时,melt.data.table可能会崩溃 [英] melt.data.table may crash when measure.vars contains variables not in data.table
本文介绍了当measure.vars包含不在data.table中的变量时,melt.data.table可能会崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下代码在我的安装中崩溃:
library(data.table)
library(reshape2)
x = data.table(a = c(1,2),b = c(2,3),c = c(3,4))
melt(x,id.vars =a )#OK
melt(x,id.vars =a,measure.vars = c(c,d))#崩溃
邮件如下:
***捕获segfault ***
地址0x21000038,原因'内存未映射'
回溯:
1:melt.data.table(x,id.vars =a,measure.vars = c c,d))
2:melt(x,id.vars =a,measure.vars = c(c,d))
这里是sessionInfo()
R版本3.1.0(2014-04-10)
平台:x86_64-pc-linux-gnu(64位)
语言环境:
[1] LC_CTYPE = en_US.UTF-8 LC_NUMERIC = C
[3] LC_TIME = ro_RO.UTF-8 LC_COLLATE = en_US.UTF-8
[5] LC_MONETARY = ro_RO.UTF-8 LC_MESSAGES = en_US.UTF-8
[7] LC_PAPER = ro_RO.UTF-8 LC_NAME = C
[9] LC_ADDRESS = C LC_TELEPHONE = C
[11] LC_MEASUREMENT = ro_RO.UTF-8 LC_IDENTIFICATION = C
附加的基本包:
[1] stats graphics grDevices utils数据集方法base
> library(data.table)
data.table 1.9.2对于帮助类型:help(data.table)
> library(reshape2)
> sessionInfo()
R版本3.1.0(2014-04-10)
平台:x86_64-pc-linux-gnu(64位)
语言环境:
[1] LC_CTYPE = en_US.UTF-8 LC_NUMERIC = C
[3] LC_TIME = ro_RO.UTF-8 LC_COLLATE = en_US.UTF-8
[5] LC_MONETARY = ro_RO.UTF-8 LC_MESSAGES = en_US.UTF-8
[7] LC_PAPER = ro_RO.UTF-8 LC_NAME = C
[9] LC_ADDRESS = C LC_TELEPHONE = C
[11] LC_MEASUREMENT = ro_RO.UTF-8 LC_IDENTIFICATION = C
附加的基本包:
[1] stats graphics grDevices utils数据集方法base
其他附加包:
[1] reshape2_1。 4 data.table_1.9.2
通过命名空间加载(未附加):
[1] plyr_1.8.1 Rcpp_0.11.1 stringr_0.6.2
这可能是同一个问题:熔解data.table似乎崩溃RStudio?
解决方案帖子和错误报告。现在,此问题已通过v1.9.3的提交1261 解决。从新闻:
如果问题仍然存在,请回复。
The following code crashes in my installation:
library(data.table) library(reshape2) x = data.table(a=c(1,2),b=c(2,3),c=c(3,4)) melt(x,id.vars="a") # OK melt(x,id.vars="a",measure.vars=c("c","d")) # Crashes
The message is the following:
*** caught segfault *** address 0x21000038, cause 'memory not mapped' Traceback: 1: melt.data.table(x, id.vars = "a", measure.vars = c("c", "d")) 2: melt(x, id.vars = "a", measure.vars = c("c", "d"))
Here is the sessionInfo()
R version 3.1.0 (2014-04-10) Platform: x86_64-pc-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=ro_RO.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=ro_RO.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=ro_RO.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=ro_RO.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base > library(data.table) data.table 1.9.2 For help type: help("data.table") > library(reshape2) > sessionInfo() R version 3.1.0 (2014-04-10) Platform: x86_64-pc-linux-gnu (64-bit) locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=ro_RO.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=ro_RO.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=ro_RO.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=ro_RO.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] reshape2_1.4 data.table_1.9.2 loaded via a namespace (and not attached): [1] plyr_1.8.1 Rcpp_0.11.1 stringr_0.6.2
It may be the same problem reported here: melting data.table seems to crash RStudio?
解决方案Thanks for the post and the bug report. This is now fixed with commit 1261 of v1.9.3. From NEWS:
melt
now returns friendly error whenmeaure.vars
are not in data instead of segfault. Closes #699. Thanks to vsalmendra for this post on SO and the subsequent bug report.Please write back if the issue persists.
这篇关于当measure.vars包含不在data.table中的变量时,melt.data.table可能会崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文