我正在尝试创建一个包含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))时,结果是“某个数字'。
答案 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。