使用R生成具有iid正态随机变量的矩阵

使用R生成具有iid正态随机变量的矩阵,r,random,normal-distribution,R,Random,Normal Distribution,有没有一种方法可以在不使用循环的情况下生成R中具有正态分布随机值的数据集?每个条目将代表一个正态分布的独立随机变量。让mu成为均值向量,sigma成为标准dev的向量 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) mu通过iid正态随机变量的M矩阵创建N,类型如下: matrix( rnorm(N*M

有没有一种方法可以在不使用循环的情况下生成R中具有正态分布随机值的数据集?每个条目将代表一个正态分布的独立随机变量。

mu
成为均值向量,
sigma
成为标准dev的向量

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)

mu通过iid正态随机变量的
M
矩阵创建
N
,类型如下:

matrix( rnorm(N*M,mean=0,sd=1), N, M) 

根据需要调整平均值和标准偏差

注意:每个条目都是独立的。所以不能避免使用for循环,因为必须为每个自变量调用一次rnorm。如果你只调用rnorm(n*m),那就是来自同一个随机变量的n*m个样本

您可以使用:

replicate(NumbOfColumns,rnorm(NumbOfLines))

您可以使用其他分布函数替换
rnorm
,例如
runif
,以生成具有其他分布的矩阵。

matrix(rnorm(n*p),n)
对于具有iid$\mathcal n(0,1)$条目的$n\times p$矩阵,只要提问者理解n是行数,M是列数,这样他就会得到很好的服务answer@DWin,同意。这是在任何上下文中引用矩阵时的常规符号,对吗?我不太确定。我确实知道,人们有时会对这样一个事实表示惊讶,即R的矩阵按列主顺序填充,并调用
matrix
,除非byrow=TRUE。我认为不同语言的矩阵约定可能存在差异。对于
matrix
,您可以指定
nrow
ncol
中的一种,这是错误的,而且会让人困惑
rnorm(n*m)
确实生成了
n*m
独立的随机样本,完全符合OP的要求。