我正在创建一个工作流程,其中包含重命名、按条件选择和使用我在管道之前提供的名称进行突变的相同操作步骤。
我已经成功使用 enquo()
和 !!
(bang bang) 将列重命名为我想要的字符串,然后再次选择它,但是当我到达突变步骤时,它要么将文本字符串重复为列值,要么无法评估。
我在下面重新创建了代码:
#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))
我可以使用quo_name()
和:=
来重命名列。
t1 %>%
rename( !! quo_name(new_var) := old_name)
我可以使用
!!
来进行选择。t1 %>%
rename( !! quo_name(new_var) := old_name) %>%
select(Year, !!new_var)
但是我不能在mutate中调用那列并使用值。
t1 %>%
rename( !! quo_name(new_var) := old_name) %>%
select(Year, !!new_var) %>%
mutate(test_var = (!! new_var))