我可以用下面的命令生成一个数据集。
df <- replicate( 100, runif(n=20))
这创建了一个维度为[20,100]的矩阵,我可以将其转换为一个100列20行的数据框。如何生成一个包含所有列向量均值的新数据框(df每列的均值)?谢谢你的帮助。
[20,100]
sulc1iza1#
您可以使用colMeans。
colMeans
data <- replicate(100, runif(n=20)) means <- colMeans(data)
b4wnujal2#
data <- replicate(100, runif(n=20))
col_mean <- apply(data, 2, mean) row_mean <- apply(data, 1, mean)
col_sd <- apply(data, 2, sd) row_sd <- apply(data, 1, sd)
hmae6n7t3#
如果我理解正确话:apply(replicate(100,runif(n=20)),2,mean)
apply(replicate(100,runif(n=20)),2,mean)
iszxjhcz4#
在Nico的答案的基础上,你可以调用runif(),将其格式化为矩阵,然后取其colMeans,这样做更快,而且与其他答案等效。
runif()
library(rbenchmark) #reasonably fast f1 <- function() colMeans(replicate(100,runif(20))) #faster yet f2 <- function() colMeans(matrix(runif(20*100), ncol = 100)) benchmark(f1(), f2(), order = "elapsed", columns = c("test", "elapsed", "relative"), replications=10000) #Test results test elapsed relative 2 f2() 0.91 1.000000 1 f1() 5.10 5.604396
4条答案
按热度按时间sulc1iza1#
您可以使用
colMeans
。b4wnujal2#
生成数据:
列、行的平均值:
列、行的标准差
hmae6n7t3#
如果我理解正确话:
apply(replicate(100,runif(n=20)),2,mean)
iszxjhcz4#
在Nico的答案的基础上,你可以调用
runif()
,将其格式化为矩阵,然后取其colMeans,这样做更快,而且与其他答案等效。