这好像是setDT
每当您尝试在存储的数据上运行它时,都会返回错误datasets
包裹。例如
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)
第二次运行时不会返回错误。
My 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
With 提交 1320, setDT
现在返回一个友好错误,表明当对象的绑定被锁定时,无法通过引用修改该对象。从NEWS,编号:37,针对 1.9.3 的错误修复:
setDT
现在,当尝试通过绑定被锁定的引用将变量更改为 data.table 时(通常当变量位于包内时,例如:CO2),现在会提供友好错误。关闭#475。感谢 David Arenburg 提交报告here on SO.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)