在R中,我使用什么命令来生成由数据集中所有列向量的均值组成的数据集?

时间:2012-04-25 19:51:11

标签: r dataset distribution

一些背景知识:首先,我想从[R]中的均匀(0,1)分布生成多组样本(每个样本大小为n)。我知道用于从均匀分布生成的命令对于某些样本大小x是runif(n = x),例如,如果我想要样本大小20,命令将是

  

runif(N = 20)

接下来,我使用了命令

  

复制(100,runif(n = 20))

这会生成一个双矩阵值,然后我可以将其转换为包含100列和20行的数据集。

我是否有可能生成一个由所有列向量的样本均值组成的数据集(从均匀分布中取出的100组样本均值)?

感谢您的帮助。

4 个答案:

答案 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