有没有一种不使用循环的方法在R中生成具有正态分布随机值的数据集?每个条目都将表示一个独立的正态分布随机变量。
有没有一种不使用循环的方法在R中生成具有正态分布随机值的数据集?每个条目都将表示一个独立的正态分布随机变量。
要创建一个N行M列的独立同分布正态分布随机变量矩阵,请键入以下代码:
matrix( rnorm(N*M,mean=0,sd=1), N, M)
根据需要微调均值和标准差。
matrix
函数时,矩阵是按列主序填充的事实感到惊讶,除非设置byrow=TRUE。这让我想到不同语言之间可能存在矩阵规范的差异。 - IRTFMmatrix
,您可以指定其中一个参数 nrow
或 ncol
。 - qwr让mu
成为均值向量,sigma
成为标准差向量。
mu<-1:10
sigma<-10:1
sample.size<-100
norm.mat<-mapply(function(x,y){rnorm(x,y,n=sample.size)},x=mu,y=sigma)
这将产生一个矩阵,其中列保留相关样本。
您可以使用:
replicate(NumbOfColumns,rnorm(NumbOfLines))
rnorm
替换为其他分布函数,例如runif
,以生成其他分布的矩阵。注意:每个条目都是独立的。因此,您不能避免使用for循环,因为您必须为每个独立变量调用rnorm一次。如果您只调用rnorm(n*m),那么这是从同一随机变量中抽取的n*m个样本!
rnorm(n*m)
确实生成了n*m
个独立的随机样本,正如OP所请求的那样。 - Ben Bolker
matrix(rnorm(n*p),n)
实现。 - cardinal