将一堆函数应用于 R 中矩阵的列
Apply a bunch of functions to columns of a matrix in R
有一种方法可以将函数 f
应用于矩阵的每一列:
M <- matrix(seq(1,16), 4, 4)
apply(M, 2, mean)
#[1] 2.5 6.5 10.5 14.5
但是如果我想建立一个关于矩阵的描述性统计,我应该使用更多的索引。例如,max, min, mean
等
但是 R 不允许这样做:
apply(M, 2, c(mean, max))
得到这个输出:
# [,1] [,2] [,3] [,4]
#mean 2.5 6.5 10.5 14.5
#max 4 8 12 16
你能告诉我如何解决这个问题吗?
尝试以下操作:
f <- c("max", "min", "mean")
sapply(f, function(x) apply(M, 2, x))
max min mean
[1,] 4 1 2.5
[2,] 8 5 6.5
[3,] 12 9 10.5
[4,] 16 13 14.5
apply(M, 2, function(x) c(mean(x), max(x)))
# [,1] [,2] [,3] [,4]
# [1,] 2.5 6.5 10.5 14.5
# [2,] 4.0 8.0 12.0 16.0
有一种方法可以将函数 f
应用于矩阵的每一列:
M <- matrix(seq(1,16), 4, 4)
apply(M, 2, mean)
#[1] 2.5 6.5 10.5 14.5
但是如果我想建立一个关于矩阵的描述性统计,我应该使用更多的索引。例如,max, min, mean
等
但是 R 不允许这样做:
apply(M, 2, c(mean, max))
得到这个输出:
# [,1] [,2] [,3] [,4]
#mean 2.5 6.5 10.5 14.5
#max 4 8 12 16
你能告诉我如何解决这个问题吗?
尝试以下操作:
f <- c("max", "min", "mean")
sapply(f, function(x) apply(M, 2, x))
max min mean
[1,] 4 1 2.5
[2,] 8 5 6.5
[3,] 12 9 10.5
[4,] 16 13 14.5
apply(M, 2, function(x) c(mean(x), max(x)))
# [,1] [,2] [,3] [,4]
# [1,] 2.5 6.5 10.5 14.5
# [2,] 4.0 8.0 12.0 16.0