【发布时间】:2013-02-05 08:16:33
【问题描述】:
我有一个 data.table,我想将它一分为二。我这样做如下:
dt <- data.table(a=c(1,2,3,3),b=c(1,1,2,2))
sdt <- split(dt,dt$b==2)
但如果我想像这样作为下一步
sdt[[1]][,c:=.N,by=a]
我收到以下警告消息。
警告消息:在
[.data.table(sdt[[1]], ,:=(c, .N), by = a) 中: 检测到无效的 .internal.selfref 并通过复制 整个表,以便 := 可以通过引用添加此新列。晒黑 早些时候,这个data.table已经被R复制了。避免key
只是想知道是否有更好的方法来拆分表格以提高效率(并且不会收到此消息)?
【问题讨论】:
-
一开始为什么要拆分data.table?拆分我们创建一个列表,因此警告处理复制发生的原因
-
我正在根据时间划分为我的实验创建两组。
-
我很好奇
.N在这种情况下是什么意思? -
@SimonO101 .N 只是组的行数。
-
在 1.9.7 中,data.table 有自己的
split方法,您的代码可以在上面正常运行。
标签: r data.table