>假设我有一个数据集,test
:
a<- c(NA,1,2)
b<- c(1,NA,2)
c<- c('not','relevant','vector')
test<-data.frame(a,b,c)
我想对列test$a
和test$b
求和,但是
test$a + test$b
返回:
[1] NA NA 4
我希望它返回:
[1] 1 1 4
由于第三个向量,具有na.rm=T
设置的 rowSums
命令将不起作用。我不想对我的特定列进行子集化,因为这是一个更大问题的简单案例。
rowSums(cbind(test$a,test$b), na.rm=TRUE)
#[1] 1 1 4
或者根据@Colonel Beauvel的评论,这里不需要cbind
。您可以直接使用 -
rowSums(test[,1:2], na.rm=T)
#[1] 1 1 4
如果你想要所有数字列的总和,请:
rowSums(test[,sapply(test,is.numeric)],na.rm = T)
[1] 1 1 4
我知道这子集了所有数字列,但是如果您有 50 个数字列和其他几个非数字列,那么执行test$col1 + test$col2 + ...
效率不是很高。