Следующее создает кадр данных с полями <int[]>
и <list[]>
:
library(tidyverse)
set.seed(123)
s <- 4
data <- data.frame(
lamda = c(5, 2, 3),
meanlog = c(9, 10, 11),
sdlog = c(2, 2.1, 2.2)
)
data2 <- data %>%
mutate(
freq = map(lamda, ~rpois(s, .x)),
freqsev = map(freq, ~map(.x, function(k) rlnorm(k, meanlog, sdlog)))
)
Вывод: as_tibble(data2)
lamda meanlog sdlog freq freqsev
<dbl> <dbl> <dbl> <list> <list>
1 5 9 2 <int [4]> <list [4]>
2 2 10 2.1 <int [4]> <list [4]>
3 3 11 2.2 <int [4]> <list [4]>
Я бынравится создавать новые поля со средним значением freq
(получая двойное число), усредняя по симуляции s
и суммой freqsev
(получая <dbl [4]>
, где [4] является индексом s
)т. е. мы суммируем по числу вхождений, например
Для data2$freq[[1]]
Я ожидаю среднее значение.
Для data2$freqsev[[1]][[1]]
Я ожидаю сумму.
Кроме того, яхотел бы создать поле или предпочтительно несколько полей на основе функции процентиля, примененной к freq
;что-то вроде:
quantile(data2$freq[[1]], c(0.5, 0.75, 0.9))
создание полей quantile_0.5, quantile_0.75, quantile_0.9 из <dbl>
Я пробовал функцию карты мурлыкания, но яне знаю, как выбрать конкретное измерение, чтобы применить операцию над.Спасибо.