Превратите функцию в нечто, над чем правильно работает (списки) - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь создать список из 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 (некоторое число, z_list_generator) таким образом, чтобы он генерировал этот же список, и чтобы когда я делал длину (lapply (некоторое число, z_list_generator)), результат получалсяномер.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Ваш z_list_generator странный.1) Вы не инициализируете mybiglist в своем коде функции.Это вероятно изменяет некоторую глобальную переменную.2) Вы присваиваете элементам mybiglist другой список (длиной 1), первый элемент которого содержит выборку из равномерного распределения.Лучше назначь, а не тмп там.

0 голосов
/ 16 февраля 2019

Вы имеете в виду что-то подобное?

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...