使用purrr生成嵌套观察

时间:2018-02-06 13:43:24

标签: r dplyr purrr

我想生成一些数据框中其他列参数化的密度。到目前为止,这是一些代码:

library(tidyverse)

a = c(2,3,4)
b = c(10,11,10)

params = expand.grid(a, b)

bdens = function(a, b){
    dens =  dbeta(x = seq(0,1,0.01), shape1 = a, shape2  = b)
    return(dens)
  }

如何使用purrr和dplyr以我描述的方式创建嵌套观察?

1 个答案:

答案 0 :(得分:0)

如果我们提供带有函数参数名称的参数,我们可以在pmap上传递

library(purrr)
set.seed(24)
params$dbetacol <- pmap_dbl(c(list(x = rnorm(9)), 
              setNames(params, c('shape1', 'shape2'))), dbeta)

注意:此处x已创建,因为OP未提供有关'x'的详细信息

更新

基于OP的功能,我们可以在函数

上应用pmap
lst <- pmap(setNames(params, c('a', 'b')), bdens)

返回list vectorlengthshape等于'params'数据集的行数,即每行seq(0, 1, 0.01)个参数对,为相同的'x'值计算β分布的密度,即101个元素(length(lst) #[1] 9 lengths(lst) #[1] 101 101 101 101 101 101 101 101 101

{{1}}