【发布时间】:2019-12-07 15:05:06
【问题描述】:
我在将所有 data.frames 转换为 data.tables 后立即使用 := 时收到警告:
library(data.table) #Win R-3.5.1 x64 data.table_1.12.2
df1 <- data.frame(A=1, B=2)
df2 <- data.frame(D=3)
lapply(mget(ls()), function(x) {
if (is.data.frame(x)) {
setDT(x)
}
})
df1[, rn:=.I]
警告信息: 在
[.data.table(df1, ,:=(rn, .I)) 中: 通过获取 data.table 的(浅)副本检测和修复无效的 .internal.selfref ,以便 := 可以通过引用添加此新列。在较早的时候,这个 data.table 已被 R 复制(或使用 structure() 或类似方法手动创建)。避免 names
下面也会产生同样的警告:
df3 <- data.frame(E=3)
df4 <- data.frame(FF=4)
for (l in list(df3, df4)) setDT(l)
df3[, rn:=.I]
一个一个地打字很有效,但是很乏味
df5 <- data.frame(G=5)
setDT(df5)
df[, rn := .I] #no warning
将所有data.frames转换为data.tables的惯用方法是什么?
相关:
【问题讨论】:
标签: r data.table