将函数转换为可以正确工作的东西(列表)

时间:2019-02-16 12:27:09

标签: r

我正在尝试创建一个包含10个元素的列表,每个元素由5 * i个从均匀分布中提取的项组成,我是ith项,我想使用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(某个数字,z_list_generator),以便生成相同的列表,并且当我执行length(lapply(某个数字,z_list_generator))时,结果是“某个数字'。

2 个答案:

答案 0 :(得分:0)

你的意思是这样吗?

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

答案 1 :(得分:0)

您的z_list_generator很奇怪。 1)您不要在功能代码中初始化mybiglist。它可能会修改一些全局变量。 2)您为mybiglist元素分配了另一个列表(长度为1),第一个元素包含来自统一分布的样本。最好在此处分配一个,而不是tmp。