通过data.table中的变量列名访问 - 错误:`无法更改'.SD'的锁定绑定值

IVI*_*VIM 1 loops r data.table

这与我之前关于data.tablefor循环和函数方便性的问题有关:如何在函数和循环中使用data.table?和相关帖子:Data.table元编程.
这个小代码显示了data.table它是如何方便地完成它(例如比较dplyr).

起初,我cannot change value of locked binding for '.SD'在使用get(strY).SD/ .SDcols=colY下面时出错.但是当我重新启动R Session时,一切正常.

dt <- data.table(ggplot2::diamonds)
nY <- 1;                       nX <- c(5:7)
strY <- names(dt)[nY];         strX <- names(dt)[nX];        

dt[,strY, with=F] # OK
dt[,nY, with=F] # OK

dt[,get(strY)] # OK NOW: 
#NO MORE: Error in assign(ii, SDenv$.SDall[[ii]], SDenv) : 
#   cannot change value of locked binding for '.SD'
dt[, .SD, .SDcols=strX] # OK NOW: 
#NO MORE Error in assign(ii, SDenv$.SDall[[ii]], SDenv) : 
#   cannot change value of locked binding for '.SD'
Run Code Online (Sandbox Code Playgroud)

IVI*_*VIM 5

通过重新启动R会话以某种方式解决了此问题. - 所有线路都有效.这段代码已成为我所有循环/功能需求的关键工作.感谢评论者!