我应该如何生成已知大小的列表列表?
目前我这样做。
create_scout_bees <- function(search_space, num_scouts){
gen_bee <- function(unused, sear_spac){
create_random_bee(sear_spac)
}
bees <- lapply(1:num_scouts, gen_bee, search_space)
#bees <- replicate(num_scouts, create_random_bee(search_space))
cat('\nclass of bees is:',class(bees),'\n')
bees
}
其中create_random_bee(sear_spac)
返回return(list(vector=random_vector(search_space)))
。这似乎太复杂了。我找到了replicate
函数(请参阅代码中的注释)。但它不会返回相同的东西。说实话,我不完全确定它的回报。
lapply选项似乎返回列表列表
[[1]]
[[1]]$vector
[1] -3.772477 -4.178604
[[2]]
[[2]]$vector
[1] -1.237291 -2.430769
[[3]]
[[3]]$vector
[1] -2.211511 -1.352074
[[4]]
[[4]]$vector
[1] 4.102391 -1.437620
[[5]]
[[5]]$vector
[1] -0.1355444 -2.0270074
复制版本返回一个列表
$vector
[1] 3.780779 3.588892
$vector
[1] -4.290371 4.098709
$vector
[1] 1.051525 -3.374406
$vector
[1] -0.4593861 -4.8412850
$vector
[1] 2.164383 -4.903347
我可以索引两个返回的值。但第二种选择似乎只是一个列表,其中包含5个带有相同键的矢量类型的元素。当按键访问时,它返回第一个元素。 如何生成已知大小的列表列表?
答案 0 :(得分:0)
你可以尝试
replicate(5, list(vector=rnorm(2)), simplify=FALSE)
# [[1]]
#[[1]]$vector
#[1] -1.5239454 -0.1326934
#[[2]]
#[[2]]$vector
#[1] -1.4369404 0.3701259
#[[3]]
#[[3]]$vector
#[1] 0.3251298 -1.4289498
#[[4]]
#[[4]]$vector
#[1] 0.8346002 -0.2974959
#[[5]]
#[[5]]$vector
#[1] 0.4581858 -0.8066517