在R语言中,rowsum和rowSums有什么区别?

4
我注意到 R 有这两个函数:rowsumrowSums
然而,R 只有 colSums,但没有 colsum
那么,rowsumrowSums 的区别是什么呢?

8
改进这个问题的一种方法是包含每个函数文档中描述它们所做的内容的说明,然后确定您在这两个说明中发现什么令您困惑的地方。 - joran
1
我觉得这是一个有效的问题,不知道为什么它被关闭了。感谢@Benjamin解答我的困惑。对于PO的快速回答是,“rowsum”实际上是计算分组数据的列总和,而不是行总和。这是一个非常糟糕的函数名称。 - nngeek
1个回答

5
那么,rowsumrowSums有什么区别呢?
help("rowsum")可以得知:
计算数值矩阵对象中每个分组变量级别的行内列和
以下是我加亮的部分。接下来是help("rowSums")
对数字数组(或数据框)形成行[...]总和和平均值。
因此,后者会给出长度为行数的向量,前者会给出[组数] x [行数]的输出。这里有两个例子。
n           <- 5L
n_groups    <- 3L
n_per_group <- 4L
n_rows      <- n_groups * n_per_group

# group variable
grp <- gl(n_groups, n_per_group, labels = letters[1:n_groups])

# data matrix
set.seed(67620866)
x <- matrix(signif(runif(n_rows * n), 2), n_rows)

# sum over groups for each column
rowsum(x, grp)
#R     [,1]  [,2]  [,3] [,4] [,5]
#R a 1.9200 1.120 2.209 1.86 1.98
#R b 2.2443 1.730 1.800 2.43 1.86
#R c 2.9900 1.742 2.270 2.58 2.78
sum(x[grp == "a", 1]) # first entry
#R [1] 1.92

# sum over rows
rowSums(x)
#R  [1] 1.7190 2.8400 1.9200 2.6100 2.4300 2.7800 2.4000 2.4543 2.6800
#R [10] 3.9200 3.7440 2.0180
sum(x[1, ]) # first entry
#R [1] 1.719

2
感谢您在“help(rowsum)”文档中强调“计算列总和...”这一点。它立即解决了我对rowsum函数输出的困惑。我觉得“rowsum”函数名非常误导人,更好的名称应该是“colsum”。 - nngeek
1
“Column sums” 也是一个糟糕的描述,因为它并没有帮助用户知道这是列内还是跨列求和。 - randy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接