以下代码说明了我的问题:
> A <- data.table(value=1)
> A_cols <- names(A)
> A[,new_value:=2]
> A_cols
[1] "value" "new_value"
在使用A_cols
修饰符修改:=
data.table
时,变量A
被间接修改了。这对我来说是出乎意料的。
我了解为什么:=
会通过data.table
之类的分配来分配modify the value pointed to,但这并不是这里发生的事情。变量B <- A
是对我的A_cols
应用 function 的结果。
此外,此行为自
以来似乎不一致。data.table
保留变量> A <- data.table(value=1)
> A_num_cols <- ncol(A)
> A[,new_value:=2]
> A_num_cols
[1] 1
不变。
我想知道A_num_cols
后面的代码是否是罪魁祸首,但是documentation中没有任何信息可以提供有关为什么应该预期这种行为的线索。
这确实是预期的吗?如果是,是否对此背后的哲学有任何解释以及为什么它似乎不一致地使用?