我们假设我有以下代码:
x = data.table(rowid=1:10, N1=2:11, N2=3:12, N3=4:13)
x[, sum(c(N1, N2, N3)),by=rowid]
Run Code Online (Sandbox Code Playgroud)
现在假设我不知道列名N1,N2,N3,它们被保存在向量中colnames=c("N1", "N2", "N3").如果我知道要传递给的变量数量sum(),我可以colnames按如下方式插入:
x[, sum(c(get(colnames[1]),get(colnames[2]),get(colnames[3]))),by=rowid]
Run Code Online (Sandbox Code Playgroud)
现在假设我不知道它的长度colnames.有什么方法可以重写上面所以它有效吗?类似的东西x[, sum(c(sapply(colnames, as.name))),by=rowid](注意这个确切的表达不起作用).
这总结了所有列,除了rowid:
x[, sum(.SD), by = rowid]
Run Code Online (Sandbox Code Playgroud)
这只对在字符向量中命名的列进行求和colnames:
x[, sum(.SD), by = rowid, .SDcols = colnames]
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,总和都是rowid.
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |