R中的按行求和

Bob*_*bby -2 r sum

让我重申我的问题,我如何才能按行对数字求和,并在最后一列之后列出总和,从而形成一个与第二张表一样的新列(sum = a + b + c + d + e)?

我还想知道如果某些值是N / A,我仍可以将它们视为数字吗?

输入样例:

     a          b           c          d            e
1    90         67          18         39           74
2    100        103         20         45           50 
3    80         87          23         44           89
4    95         57          48         79           90
5    74         81          61         95           131
Run Code Online (Sandbox Code Playgroud)

所需的输出:

     a          b           c          d            e    sum
1    90         67          18         39           74   288
2    100        103         20         45           50   318
3    80         87          23         44           89   323
4    95         57          48         79           90   369
5    74         81          61         95           131  442 
Run Code Online (Sandbox Code Playgroud)

MrF*_*ick 5

要添加行总和,您可以使用 addmargins

M <- matrix(c(90,67,18,39,74), nrow=1)
addmargins(M, 2)   #2 = row margin
#      [,1] [,2] [,3] [,4] [,5] [,6]
# [1,]   90   67   18   39   74  288
Run Code Online (Sandbox Code Playgroud)

如果缺少数据,则需要将margin函数更改为可以正确处理NA值的函数

M<-matrix(c(90,67,18,NA,74), nrow=1)
addmargins(M, 2, FUN=function(...) sum(..., na.rm=T))
#      [,1] [,2] [,3] [,4] [,5] [,6]
# [1,]   90   67   18   NA   74  249
Run Code Online (Sandbox Code Playgroud)

  • 或者避免避免重新定义函数-`cbind(M,rowSums(M,na.rm = TRUE))` (2认同)