Создание тибла и рандомизации - PullRequest
1 голос
/ 02 апреля 2019

Я хочу создать тиббл с идентификатором (iter) и случайно сгенерированными данными.

   iter data
  <int> <list>
1     1 <dbl [5]>
2     2 <dbl [5]>
3     3 <dbl [5]>

Я пробовал два типа кодов, и только один из них дает ожидаемый результат, но я не уверен, почему это так, потому что единственная разница заключается в генерации данных внутри tibble() или нет.

iter <- 2 ; n <- 5 ; mu <- 1
gen_data <- function(x){  # randomly draw from Exponential function
    return(rexp(n, rate=1/mu))
}

# Works (different values each time)
data <- lapply(1:iter, gen_data)
tibble(iter = 1:iter,
             data = data) %>% unnest(data)

# Doesn't work (+ there is a warning)
tibble(iter = 1:iter,
             data = lapply(1:iter, gen_data)) %>% unnest(data)

1 Ответ

2 голосов
/ 02 апреля 2019

Когда вы вызываете lapply() во втором примере, который не работает, вам нужно ссылаться на iter только по его имени, а не пытаться перестроить вектор.

tibble(iter = 1:iter,
       data = lapply(iter, gen_data)) %>% unnest(data)

Это потому, что tibble() ищет переменные по имени в своем контексте, и iter уже существует там как c(1,2).Предупреждение приходит от того, что вы передаете два элемента в :, который жалуется, а затем продвигается вперед, используя первый элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...