Ошибка в `setDT` из пакета` data.table`

Это похоже на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) не возвращает ошибку при втором запуске.

мой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   

Ответы на вопрос(1)

Ваш ответ на вопрос