当measure.vars包含不在data.table中的变量时,melt.data.table可能会崩溃 [英] melt.data.table may crash when measure.vars contains variables not in data.table

查看:367
本文介绍了当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 解决。从新闻



  • melt 现在会在 meaure.vars 不在数据而不是segfault。关闭#699 。感谢vsalmendra对 SO上的这篇文章以及后续的错误报告。


如果问题仍然存在,请回复。


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 when meaure.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆