【发布时间】:2014-01-09 15:21:59
【问题描述】:
假设我有一个data.table
a <- data.table(id=c(1,1,2,2,3),a=21:25,b=11:15,key="id")
我可以像这样添加新列:
a[, sa := sum(a), by="id"]
a[, sb := sum(b), by="id"]
> a
id a b sa sb
1: 1 21 11 43 23
2: 1 22 12 43 23
3: 2 23 13 47 27
4: 2 24 14 47 27
5: 3 25 15 25 15
但是,假设我有 列名:
for (n in c("a","b")) {
s <- paste0("s",n)
a[, s := sum(n), by="id", with=FALSE] # ERROR: invalid 'type' (character) of argument
}
我该怎么办?
【问题讨论】:
-
...和 data.table 常见问题解答中的 1.6。
-
@joran:我不明白我怎么可以在这里使用
eval/quote;我试过s <- quote(paste0("s..",n) := sum(n)); a[, eval(s), by="id"]失败了。 -
@sds 我只是在集思广益。不过我很同情。 data.table 对这类问题造成的混乱程度是我不经常使用它的最大原因。
标签: r data.table