我需要通过更改'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)) }
)
但是我在此代码中遇到错误。你能帮我弄清楚吗?
谢谢
答案 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
参数。