首页 > 解决方案 > 将函数转换为 lapply 可以正常工作的东西(列表)

问题描述

我正在尝试制作一个包含 10 个元素的列表,每个元素由 5 * i 个从均匀分布中抽取的项目组成,i 是第 i 个条目,我想使用 lapply。

目前我做了这个功能:

z_list <- list()
z_list_generator <- function(n) {
  for(i in 1:n){
  a <- runif(5 * i)
  tmp <- list(a)
  mybiglist[[i]] <- tmp
  }
  mybiglist
}

当我只输入 z_list_generator(2) 时,这个函数确实给出了正确的结果,它打印了一个列表,其中第一个元素由 5 个元素组成,第二个元素由 10 个元素组成。

我想要实现的是我做 lapply(some number, z_list_generator) 以便它生成相同的列表,并且当我做 length(lapply(some number, z_list_generator)) 时,结果是'some number'。

标签: r

解决方案


你的意思是这样的吗?

z_list_generator  <- function(k) lapply(1:k, function(i) runif(5 * i))

set.seed(2018)    # Fixed random seed for reproducibility
z_list_generator(2)
#[[1]]
#[1] 0.33615347 0.46372327 0.06058539 0.19743361 0.47431419
#
#[[2]]
# [1] 0.3010486 0.6067589 0.1300121 0.9586547 0.5468495 0.3956160 0.6645386
# [8] 0.9821123 0.6782154 0.8060278

length(z_list_generator(2))
#[1] 2

推荐阅读