小编Ada*_*ing的帖子

如何将使用 enquo() 创建的动态变量名称传递给 dplyr 的 mutate 进行评估?

我正在创建一个工作流程,其中包含相同的管道步骤:重命名、选择依据,然后使用我在管道之前提供的名称来更改所有内容。

我已经成功使用enquo()and !!(bang bang) 重命名为我想要的字符串,然后再次选择它,但是当我到达 mutate 步骤时,它要么重复文本字符串作为列值,要么不会计算。

我重新创建了下面的代码:

#Testing rename, select, and mutate use cases for enquo()

#Load packages
library(dplyr)
library(rlang)
library(magrittr)

#Create name I want to pass
new_var <- quo("new_name")

#Create Test Data
t1 <- tibble(Year = c(2000:2004),
             old_name = c(NA, 1, 1, 1, NA))
Run Code Online (Sandbox Code Playgroud)

quo_name()我可以用和 重命名该列:=

t1 %>% 
  rename( !! quo_name(new_var) := old_name)
Run Code Online (Sandbox Code Playgroud)

我可以使用它来选择!!

t1 %>% 
  rename( !! quo_name(new_var) := old_name) %>% 
  select(Year, !!new_var)
Run Code Online (Sandbox Code Playgroud)

但我无法在 mutate 中调用该列并使用这些值

t1 %>% 
  rename( !! quo_name(new_var) …
Run Code Online (Sandbox Code Playgroud)

r dplyr rlang quosure

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

标签 统计

dplyr ×1

quosure ×1

r ×1

rlang ×1