我可以用runif函数生成20个均匀分布的观测值:runif(n=20)和100份相同分布的重复样品,如下所示。
runif(n=20)
df <- replicate( 100, runif(n=20))
这创建了df一个维度为[20,100]的矩阵,我可以将其转换为一个100列20行的 Dataframe 。如何生成包含df每列均值的新 Dataframe ?谢谢你的帮助。
df
[20,100]
vi4fp9gy1#
您可以使用colMeans。
colMeans
data <- replicate(100, runif(n=20)) means <- colMeans(data)
4xy9mtcn2#
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)
uqjltbpv3#
如果我理解正确话:apply(replicate(100,runif(n=20)),2,mean)
apply(replicate(100,runif(n=20)),2,mean)
vlju58qv4#
在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条答案
按热度按时间vi4fp9gy1#
您可以使用
colMeans
。4xy9mtcn2#
生成数据:
列、行的平均值:
列、行的标准差
uqjltbpv3#
如果我理解正确话:
apply(replicate(100,runif(n=20)),2,mean)
vlju58qv4#
在Nico的答案的基础上,你可以调用
runif()
,将其格式化为矩阵,然后取其colMeans,这样做更快,而且与其他答案等效。