Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将数据传递给data.table中具有未知数量的编程定义变量的函数_R_Data.table - Fatal编程技术网

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
确定