R使用kwargs从多个分布中生成随机数据 问题:

R使用kwargs从多个分布中生成随机数据 问题:,r,random,parameters,R,Random,Parameters,我想从几个分布中生成随机样本,例如,norm,poi等。但是,我想为rdist函数指定参数,比如将参数传递给函数调用 尝试: 我试着用pythonpartial或**kwargs dist = 'rnorm' # dist n = 100 # sample size para1 = c(0,1) # parameters mean(get(dist)(n,para1)) # it fails para2 = c(mean = 0, sd = 1)# parameters mean(get(di

我想从几个分布中生成随机样本,例如,
norm
poi
等。但是,我想为
rdist
函数指定参数,比如将参数传递给函数调用

尝试: 我试着用python
partial
**kwargs

dist = 'rnorm' # dist
n = 100 # sample size
para1 = c(0,1) # parameters
mean(get(dist)(n,para1)) # it fails

para2 = c(mean = 0, sd = 1)# parameters
mean(get(dist)(n,para2)) # it fails

输出:


正如我们从输出中看到的,
rnorm
没有从
norm(平均值=0,sd=1)
生成样本,因为样本平均值约为0.5。输出随机数是从
rnorm(1,mean=0,sd=1)
rnorm(1,mean=1,sd=1)
逐个生成的。

您可以使用
do.call
将函数作为字符名调用,并在列表中传递函数参数(另请参见
do.call
):

##标准标准样品
(X[1]1.4127136-0.4113396 1.7546034 0.6741983-1.3499156-0.8033819
#>  [7] -1.6393473 -0.7667389  0.7157213 -1.1061452
平均值(X)
#> [1] -0.1519632

“rnorm没有从norm(mean=0,sd=1)生成样本”它没有?你怎么知道?输出显示它生成了样本平均值在0.5左右的样本。实际上,它生成了一个样本,样本的rnorm(n=1,mean=0,sd=1),
rnorm(n=1,mean=1,sd=1)
rnorm(n=1,mean=0,sd=1)
等等。所以样本的期望平均值是0.5@Hongooi我也要弄清楚,我总是被
get
eval
,“parse”和“do.call”T-T弄糊涂
[1] 0.6318898
[2] 0.4246129