使用 purrr 生成嵌套观察
Generating nested observations with 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 按照我描述的方式创建嵌套观察?
如果我们为参数提供函数的参数名称,我们可以将其传递给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)
returns list
of vector
s 其中 length
等于 'params' 数据集的行数,即对于每对 [=每行有 19=] 个参数,β 分布的密度是针对相同的 'x' 值计算的,即 101 个元素 (seq(0, 1, 0.01)
)
length(lst)
#[1] 9
lengths(lst)
#[1] 101 101 101 101 101 101 101 101 101
我想生成几个由数据框中其他列参数化的密度。到目前为止,这是一些代码:
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 按照我描述的方式创建嵌套观察?
如果我们为参数提供函数的参数名称,我们可以将其传递给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)
returns list
of vector
s 其中 length
等于 'params' 数据集的行数,即对于每对 [=每行有 19=] 个参数,β 分布的密度是针对相同的 'x' 值计算的,即 101 个元素 (seq(0, 1, 0.01)
)
length(lst)
#[1] 9
lengths(lst)
#[1] 101 101 101 101 101 101 101 101 101