1
这很令人沮丧,因为它觉得它应该如此简单,但它吸干了几个小时。R:1列或更多列的行数
我想获得数据框中列的列表的行总和,但该列表(由用户设置)可能非常好,长度为1即列号。
rowSums
不允许求和1列。
rowsum
使用我发现完全不可解码的组。我已经玩了很多年的例子,但仍然不知道它的用途,但它不能被忽略。
最上面的答案here使用rowSums
或apply
;第二个使用.SD
和lapply
,但使用:=
和.SD
以及其他没有出现在R帮助中的术语,也没有见过,这只是另一个搜索和混淆的虫洞。
所以说:有什么我可以使用:
x <- matrix(runif(100), ncol = 5)
goodcols <- c(1,3,5)
y <- rowSums(x[,goodcols])
,将用1或> 1 goodcols工作?
在此先感谢。我目前考虑使用:
ifelse(length(goodcols)>1,
y<-rowSums(x[,goodcols]),
y<-x[,goodcols])
只是用'下降= FALSE'避免X被改变当只有一列时,将其转换为向量。 '.SD'和':='是包'data.table'的语法。最后一件事,把'y < - rowSums(x [,goodcols])'而不是'y < - rowSums [,goodcols]',这应该会更好;-)(所以你需要的是'y < - rowSums( x [,goodcols,drop = F])) – Cath