R数据表内部自参考警告
在R中执行以下三行代码时,我收到.internal.selfref警告 从警告中,我认为代码的第二行在没有保留正确引用的情况下复制了data.table 有人能解释这是如何机械地发生的吗 例如,用dt[,y:=1]替换第二行可以解决这个问题,但我不明白为什么 我的R版本是3.1.2R数据表内部自参考警告,r,data.table,R,Data.table,在R中执行以下三行代码时,我收到.internal.selfref警告 从警告中,我认为代码的第二行在没有保留正确引用的情况下复制了data.table 有人能解释这是如何机械地发生的吗 例如,用dt[,y:=1]替换第二行可以解决这个问题,但我不明白为什么 我的R版本是3.1.2 > dt = data.table(x=1:2) > dt[["y"]] = 1 > dt[, z:=1] Warning message: In `[.data.table`(dt, .`:=`(
> dt = data.table(x=1:2)
> dt[["y"]] = 1
> dt[, z:=1]
Warning message:
In `[.data.table`(dt, .`:=`(z, 1)) :
Invalid .internal.selfref detected ...
是的,
[[这个答案中的很多细节都很有趣,在添加y
的各种方法之前和之后键入traceem(dt)
。似乎只有:=
通过引用进行修改,而其他人则移动/复制,甚至是只使用data.table函数的dt[,“y”]=1
。是的,[[这个答案中的许多细节都很有趣,在添加y
的各种方法之前和之后键入traceem(dt)
。似乎只有:=
通过引用进行修改,而其他人甚至移动/复制,甚至dt[,“y”]=1
,它只使用data.table函数。