Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用R中的Lappy生成参数可变的随机数_R_Simulation_Lapply - Fatal编程技术网

使用R中的Lappy生成参数可变的随机数

使用R中的Lappy生成参数可变的随机数,r,simulation,lapply,R,Simulation,Lapply,我需要生成具有不同参数的随机数(二项式)。 我正试图使用lappy函数来实现这一点 这是我目前的代码: lst1 <- list(n=c(10,20), size=c(100,200), q=c(0.1,0.2)) #list of variables lapply(lst1, function(x) { rbinom(x[1],x[2],x[3]) }) 但我还是犯了一个错误。 有人能帮我找出错误吗 谢谢。当函数每次需要获取不同的参数集时,最好使用Map而不是lappy: >

我需要生成具有不同参数的随机数(二项式)。 我正试图使用
lappy
函数来实现这一点

这是我目前的代码:

lst1 <- list(n=c(10,20), size=c(100,200), q=c(0.1,0.2)) #list of variables

lapply(lst1, function(x) {
  rbinom(x[1],x[2],x[3])
})
但我还是犯了一个错误。 有人能帮我找出错误吗


谢谢。

当函数每次需要获取不同的参数集时,最好使用
Map
而不是
lappy

> Map(rbinom, lst1$n, lst1$size, lst1$q)
[[1]]
 [1] 15  7  8 12  9 11  4  9 12  7

[[2]]
 [1] 47 40 37 54 40 39 39 43 50 33 34 37 42 31 26 34 31 38 43 43

使用
lappy
您可以这样做:

lapply(1:2, function(ind) rbinom(lst1$n[ind], lst1$size[ind], lst1$q[ind]))
[[1]]
 [1] 10 18  7  9  9 18  7  8  8 10

[[2]]
 [1] 46 42 44 37 38 40 52 44 42 38 40 35 41 46 44 38 41 32 61 33

或者在将
列表
的名称与函数的参数匹配后,使用
pmap
from
purr

names(formals(rbinom))
#[1] "n"    "size" "prob"
这里的“q”可以重命名为“prob”

library(purrr)
names(lst1)[3] <- 'prob'
pmap(lst1, rbinom)
#[[1]]
# [1] 13  9 12 19 11  8 14 13 16  7

#[[2]]
# [1] 42 52 37 48 41 33 34 31 47 41 41 40 39 42 41 41 52 47 42 49
库(purrr)
名称(lst1)[3]
library(purrr)
names(lst1)[3] <- 'prob'
pmap(lst1, rbinom)
#[[1]]
# [1] 13  9 12 19 11  8 14 13 16  7

#[[2]]
# [1] 42 52 37 48 41 33 34 31 47 41 41 40 39 42 41 41 52 47 42 49