如何避免rowSums删除行名?

问题描述

我正在处理包含计数的100列以上的数据框,就像这样

x<- data.frame (x1 = c(1,2,3,4),x2 = c(2,4,5,9),x0= c("a","b","c","d","e")) %>% 
  column_to_rownames("x0")


 x1 x2
a  1  2
b  0  4
c  2  5
d  3  0
e  4  9

我想添加一个新列,最好使用 mutate(counts = rowSums()) 但是当我这样做时,行名将被删除(即变为1,3等)。

我的方法是使用rownames_to_column将名称存储在列中,然后从column2开始计算总和,但是我无法提供合适的代码

感谢您的帮助!

解决方法

dplyr(或通常为tidyverse)不允许行名。

保留行名的一种方法是在新列执行所需的数据操作并将行名移回时添加行名。

library(dplyr)
library(tibble)

x %>%
  rownames_to_column() %>%
  mutate(Total = rowSums(.[-1])) %>% 
  column_to_rownames()

#  x1 x2 Total
#a  1  2     3
#b  0  4     4
#c  2  5     7
#d  3  0     3
#e  4  9    13