繁体   English   中英

来自`data.table`包的`setDT`出错

[英]Error in `setDT` from `data.table` package

当您尝试在datasets包中的存储数据上运行setDT时,似乎setDT返回错误。 例如

library(data.table)
setDT(CO2)

## Error in assign(name, x, parent.frame(), inherits = TRUE) : 
##   cannot change value of locked binding for 'CO2'

最顽固的是,如果你重新运行setDT(CO2)它会起作用

所以我查看了setDT的源代码并尝试重现错误

x <- CO2
name <- as.character(substitute(x))
assign(name, x, parent.frame(), inherits = TRUE)

哪个工作并没有返回任何错误。 我的猜测是parent.frame()是导致它的那个,但我不知道自己是什么时候回到舞台上。 另外,我无法理解为什么setDT(CO2)在第二次运行时不会返回错误。

我的sessionInfo()

## R version 3.0.3 (2014-03-06)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## 
## locale:
##   [1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
## [4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    
## 
## attached base packages:
##   [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##   [1] data.table_1.9.2
## 
## loaded via a namespace (and not attached):
##   [1] plyr_1.8       reshape2_1.2.2 stringr_0.6.2  tools_3.0.3   

使用commit 1320setDT现在返回一个友好错误,当绑定被锁定时,该对象无法通过引用进行修改。 来自NEWS ,No:37的1.9.3错误修复:

当尝试通过引用将变量更改为data.table时, setDT现在提供了一个友好的错误,该引用的绑定被锁定(通常当变量在包中时,例如:CO2)。 关闭#475 感谢David Arenburg备案报告这里的SO。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM