一些背景知识:首先,我想从[R]中的均匀(0,1)分布生成多组样本(每个样本大小为n)。我知道用于从均匀分布生成的命令对于某些样本大小x是runif(n = x),例如,如果我想要样本大小20,命令将是
runif(N = 20)
接下来,我使用了命令
复制(100,runif(n = 20))
这会生成一个双矩阵值,然后我可以将其转换为包含100列和20行的数据集。
我是否有可能生成一个由所有列向量的样本均值组成的数据集(从均匀分布中取出的100组样本均值)?
感谢您的帮助。
答案 0 :(得分:10)
您可以使用colMeans
。
data <- replicate(100, runif(n=20))
means <- colMeans(data)
答案 1 :(得分:4)
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)
答案 2 :(得分:2)
如果我理解正确:
apply(replicate(100,runif(n=20)),2,mean)
答案 3 :(得分:2)
建立Nico的答案,你可以改为拨打runif()
,将其格式化为矩阵,然后取出它的colMeans。它证明更快,相当于其他答案。
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