purrr在指定尺寸上将函数应用于data.frame中的列表

时间:2019-02-01 01:05:40

标签: r dictionary purrr quantile

以下内容将产生一个包含<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))

产生<dbl>的字段Quantile_0.5,Quantile_0.75,Quantile_0.9

我已经尝试了purrr贴图功能,但是我不知道如何选择特定尺寸来应用该操作。 谢谢。

0 个答案:

没有答案