关于模拟分发族

时间:2018-07-19 19:59:38

标签: r simulation lapply

我需要通过更改'epso'的值来模拟以下分布。其中“ epso”是从0到1的序列,以0.1递增。

epso <- seq(0, 1, .1)
(1-epso)*replicate(n=2,rnorm(30,mean=0,sd=1)) + epso*replicate(n=2,rnorm(30,mean=0,sd=10))

我正在尝试使用Apply函数来做到这一点。我认为最合适的应用功能是lapply。这就是我的代码。

lapply(epso=seq(0, 1, .1), function(epso) {
  (1-epso)*replicate(n=2,rnorm(30,mean=0,sd=1)) 
+ epso*replicate(n=2,rnorm(30,mean=0,sd=10)) }

)

但是我在此代码中遇到错误。你能帮我弄清楚吗?

谢谢

1 个答案:

答案 0 :(得分:2)

lapply遍历的参数称为x=。您无法命名。 (通常名称会完全省略)。您应该使用

lapply(seq(0, 1, .1), function(epso) {
  (1-epso)*replicate(n=2,rnorm(30,mean=0,sd=1)) +  
    epso*replicate(n=2,rnorm(30,mean=0,sd=10)) }

)

通过给参数命名,您的函数将成为第一个未命名的参数,因此它被提升为x值,并且没有任何东西可以用作FUN参数。