如何用R生成5000个样本量为20的N(0,1)数据集?
关于生成5000个样本量为20的标准正态数据集的解答
嘿,作为R语言新手能想到用矩阵来实现这个需求已经超棒啦!咱们先拆解下你的代码,看看它到底能不能满足你的需求:
你的代码是:
a <- rnorm(100000) am <- matrix(a, nrow = 20, ncol = 5000)
结论:你的代码完全正确!
rnorm(100000)生成了 5000×20=100000 个服从标准正态分布N(0,1)的随机数,这个数量正好匹配你的需求;matrix(a, nrow = 20, ncol = 5000)把这些随机数排成了20行、5000列的矩阵——这意味着每一列就是一个包含20个观测的标准正态数据集,总共5000列,刚好对应你要的5000个数据集。
给你补充两种更直观的写法
如果觉得矩阵的行列设置有点绕,你可以用replicate函数,它的语义更清晰,一看就知道是要重复生成5000次长度为20的正态向量:
# 生成5000个样本量为20的标准正态数据集,结果和你的矩阵完全一致 datasets <- replicate(5000, rnorm(20))
另外,如果你习惯把每个数据集放在行里(后续分析可能更方便),只需要调整矩阵的参数:
# 每一行是一个20观测的数据集,共5000行 am_rows <- matrix(a, nrow = 5000, ncol = 20)
小技巧:验证数据集是否符合要求
你可以随便挑一个数据集,检查它的均值和方差是否接近0和1(因为是随机生成,不会完全等于,但会很接近):
# 检查第10个数据集(列)的均值和方差 mean(am[, 10]) var(am[, 10])
不用太担心,你的思路完全没问题,选你觉得最易读的写法就好~
内容的提问来源于stack exchange,提问作者lol
相关产品推荐
相关产品推荐

