小编jpq*_*ast的帖子

Tidy Eval:不可能在嵌套函数中使用 {{var}}?

我试图tidyr::complete在我的函数中使用,同时使用{{}}. 这工作正常,但是,当我添加一个嵌套函数来组合两个变量时,我得到一个错误。请参阅下面的最小示例。

library(tidyverse)
library(rlang)

df <- tibble(
  group1 = c(1:2, 1),
  group2 = c("c", "c", "c"),
  item_id = c(1:2, 2),
  item_name = c("a", "b", "b"),
  value1 = 1:3,
  value2 = 4:6
)

my_complete <- function(data, var1, var2, var3, var4, var5, var6){
  data %>%
    tidyr::complete({{var1}}, {{var3}})
}

my_complete(df, var1 = group1, var2 = group2, var3 = item_id, var4 = item_name, var5 = value1, var6 = value2)
Run Code Online (Sandbox Code Playgroud)

这有效,输出为:

# A tibble: 4 x 6
  group1 item_id group2 item_name …
Run Code Online (Sandbox Code Playgroud)

r metaprogramming tidyverse tidyeval rlang

5
推荐指数
1
解决办法
80
查看次数

使用 furrr 进行 tidy 评估

我想让以下函数使用furrr包而不是purrr包并行运行。

library(furrr)
library(tidyverse)

input <- list(element1 = tibble::tibble(a = c(1, 2), b = c(2, 2)),
              element2 = tibble::tibble(a = c(1, 2), b = c(4, 4))
)

multiplier <- function(data, var1, var2){
  purrr::map_df(.x = data,
                .f = ~ .x %>% 
                  dplyr::mutate(product = {{var1}} * {{var2}})
  )
}

multiplier(input, a, b)
Run Code Online (Sandbox Code Playgroud)

但是,当我将其转换为furrr等效项时,出现错误。

multiplier_parallel <- function(data, var1, var2){
  furrr::future_map_dfr(.x = data,
                .f = ~ .x %>% 
                  dplyr::mutate(product = {{var1}} * {{var2}})
  )
}

future::plan(multiprocess)

multiplier_parallel(input, a, b) …
Run Code Online (Sandbox Code Playgroud)

future r purrr tidyeval furrr

2
推荐指数
1
解决办法
185
查看次数

标签 统计

r ×2

tidyeval ×2

furrr ×1

future ×1

metaprogramming ×1

purrr ×1

rlang ×1

tidyverse ×1