关于模拟分布族

Regarding simulating a family of distribution

我需要通过更改 '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))

我正在尝试使用应用函数来执行此操作。我认为最合适的应用函数是 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)) }

)

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

谢谢

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 参数。