purrr применять функции к спискам в data.frame поверх указанных измерений - PullRequest
0 голосов
/ 01 февраля 2019

Следующее создает кадр данных с полями <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>

Я пробовал функцию карты мурлыкания, но яне знаю, как выбрать конкретное измерение, чтобы применить операцию над.Спасибо.

...