%>%
将运算符与.
的左侧(LHS)对象结合使用是很常见的%>%
,例如:
library(purrr)
mtcars %>%
split(.$cyl) %>% # as you can see here
map(~ lm(mpg ~ hp, data = .x))
但是使用rsample::bootstraps()
函数创建一个带有引导列表列的小标题,其中每个元素都有一个数据集,我注意到使用.
上面描述的模式时出现错误,我不太理解。
library(purrr)
# create a 3 partitions
# inspect how many cyl == 4 are in each partition (ERROR)
rsample::bootstraps(mtcars, times = 3) %>%
map_dbl(.$splits,
function(x) {
cyl = as.data.frame(x)$cyl
mean(cyl == 4)
})
Error: Index 1 must have length 1, not 4
Run `rlang::last_error()` to see where the error occurred.
但是,如果您将 的输出存储rsample::bootstraps()
在ex
对象中然后使用map_dbl
,正如您在文档中看到的那样,它可以正常工作。
library(purrr)
# create 3 partitions
ex <- rsample::bootstraps(mtcars, times = 3)
# inspect how many cyl == 4 are in each partition (WORKS OK)
map_dbl(ex$splits,
function(x) {
cyl = as.data.frame(x)$cyl
mean(cyl == 4)
})
[1] 0.50000 0.28125 0.43750
了解程序之间的这种行为有什么想法吗?