R 将数据传递给data.table中具有未知数量的编程定义变量的函数
假设我有以下代码:R 将数据传递给data.table中具有未知数量的编程定义变量的函数,r,data.table,R,Data.table,假设我有以下代码: x = data.table(rowid=1:10, N1=2:11, N2=3:12, N3=4:13) x[, sum(c(N1, N2, N3)),by=rowid] 现在假设我事先不知道列名N1、N2、N3,它们保存在向量colnames=c(“N1”、“N2”、“N3”)中。如果我知道要传递给sum()的变量数,我可以按如下方式插入colnames: x[, sum(c(get(colnames[1]),get(colnames[2]),get(colnames[
x = data.table(rowid=1:10, N1=2:11, N2=3:12, N3=4:13)
x[, sum(c(N1, N2, N3)),by=rowid]
现在假设我事先不知道列名N1、N2、N3,它们保存在向量colnames=c(“N1”、“N2”、“N3”)
中。如果我知道要传递给sum()
的变量数,我可以按如下方式插入colnames
:
x[, sum(c(get(colnames[1]),get(colnames[2]),get(colnames[3]))),by=rowid]
现在假设我不知道
colnames
的长度。我有没有办法重写上面的内容,使之生效?类似于x[,sum(c(sapply(colnames,as.name))),by=rowid]
(请注意,这个精确表达式不起作用)。这将对除rowid
之外的所有列求和:
x[, sum(.SD), by = rowid]
这仅对字符向量colnames
中命名的列求和:
x[, sum(.SD), by = rowid, .SDcols = colnames]
在这两种情况下,总和由rowid
确定