一、行列求和、平均值和频度
rowSums, colSums, rowMeans, colMeans 可以简单理解为按行或列求和或求均值,table把数字或字符当成因子统计频度,都相当简单:
> a <- array(rep(1:3, each=3), dim=c(3,3))
> a
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 1 2 3
[3,] 1 2 3
> rowSums(a)
[1] 6 6 6
> colSums(a)
[1] 3 6 9
> table(a)
a
1 2 3
3 3 3
对于多维数组,rowSums, colSums, rowMeans, colMeans的使用稍为复杂点。它们的参数为:
colSums (x, na.rm = FALSE, dims = 1)
rowSums (x, na.rm = FALSE, dims = 1)
colMeans(x, na.rm = FALSE, dims = 1)
rowMeans(x, na.rm = FALSE, dims = 1)
> b <- array(rep(1:3, each=9), dim=c(3,3,3))
> b
, , 1
[,1] [,2] [,3]
[1,] 1 1 1
[2,] 1 1 1
[3,] 1 1 1
, , 2
[,1] [,2] [,3]
[1,] 2 2 2
[2,] 2 2 2
[3,] 2 2 2
, , 3
[,1] [,2] [,3]
[1,] 3 3 3
[2,] 3 3 3
[3,] 3 3 3
> rowSums(b)
[1] 18 18 18
> rowSums(b,dims=1)
[1] 18 18 18
> rowSums(b,dims=2)
[,1] [,2] [,3]
[1,] 6 6 6
[2,] 6 6 6
[3,] 6 6 6
> colSums(b)
[,1] [,2] [,3]
[1,] 3 6 9
[2,] 3 6 9
[3,] 3 6 9
> colSums(b,dims=2)
[1] 9 18 27
table可以统计数字出现的频率,也可以统计其他可以被看做因子的数据类型:
> table(b)
b
1 2 3
9 9 9
> c <- sample(letters[1:5], 10, replace=TRUE)
> c
[1] "a" "c" "b" "d" "a" "e" "d" "e" "c" "a"
> table(c)
c
a b c d e
3 1 2 2 2
如果参数不只一个,它们的长度应该一样,结果是不同因子组合的频度表:
> a <- rep(letters[1:3], each=4)