gpt4 book ai didi

r - 如何使 purrr invoke_map 与闭包一起工作

转载 作者:行者123 更新时间:2023-12-04 09:21:37 25 4
gpt4 key购买 nike

为了创建一个处理移动平均线的函数,我遇到了这个问题。我尝试使用 dplyr 和 purrr 生成闭包列表。

v <- 5
funs <- map(1:v, ~ . %>% lag(n = .x) )

虽然 funs[[1]](rnorm(100))funs[[2]](rnorm(100)) 有效,但我没能使这条线工作:

invoke_map(funs, rnorm(100))

为什么会这样?

最佳答案

invoke_map 不确定您希望它如何迭代。这是一个非常灵活的函数,有时会跨函数迭代,有时会跨参数迭代,有时会跨两者迭代。为了明确表示您只希望它遍历函数,请指定 rnorm(x) 应该去的参数,尽管如果您保留传统的函数结构而不是函数序列,这样做会更容易:

library(purrr)
set.seed(47)

funs <- map(1:5, ~partial(dplyr::lag, n = .x))

funs %>%
invoke_map(x = rnorm(10)) %>%
str(vec.len = 10)
#> List of 5
#> $ : num [1:10] NA 1.9947 0.7111 0.1854 -0.2818 0.1088 -1.0857 -0.9855 0.0151 -0.252
#> $ : num [1:10] NA NA 1.9947 0.7111 0.1854 -0.2818 0.1088 -1.0857 -0.9855 0.0151
#> $ : num [1:10] NA NA NA 1.995 0.711 0.185 -0.282 0.109 -1.086 -0.985
#> $ : num [1:10] NA NA NA NA 1.995 0.711 0.185 -0.282 0.109 -1.086
#> $ : num [1:10] NA NA NA NA NA 1.995 0.711 0.185 -0.282 0.109

关于r - 如何使 purrr invoke_map 与闭包一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52089486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com