LHS中的data.table .SD:=

时间:2014-11-07 17:57:55

标签: r data.table

这是参考 different question ,其中我的原始答案没有成功,因为它试图在LHS中使用.SD

library(data.table)
data.table(data)[,
  paste0(names(.SD), "_tot"):=lapply(.SD, sum), by=region, .SDcols=-1
][1:2]

#         biz  region june july _tot
# 1:    telco mideast    2  122  768
# 2: shipping mideast   29  111  768

但我真的希望这能做什么

new.names <- paste0(names(data[, -(1:2)]), "_tot")
data.table(data)[,
  (new.names):=lapply(.SD, sum), by=region, .SDcols=-1
][1:2]

#         biz  region june july june_tot july_tot
# 1:    telco mideast    2  122      768     3802
# 2: shipping mideast   29  111      768     3802

我做错了吗?或者是否有另一种方法(参见:=的LHS中的.SD。)


编辑:更多地考虑这一点,显然.SD无法用于LHS,因为LHS应该只有一个值,无论有多少组,而{{1更改每个组的值。它看起来似乎没有.SD变量或其他一些在LHS中使用,但我很想知道其他人是否有更好的解决方案来避免引用原始{{1}正如我在这里构建.SDcols

0 个答案:

没有答案