我正在尝试使用dplyr的新NSE语言方法来创建条件变异,使用矢量输入。我遇到麻烦的地方是将列设置为等于它自己,请参见下面的mwe:
df <- data.frame("Name" = c(rep("A", 3), rep("B", 3), rep("C", 4)),
"X" = runif(1:10),
"Y" = runif(1:10)) %>%
tbl_df() %>%
mutate_if(is.factor, as.character)
ColToChange <- "Name"
ToChangeTo <- "Big"
现在,使用以下内容:
df %>% mutate( !!ColToChange := ifelse(X >= 0.5 & Y >= 0.5, ToChangeTo, !!ColToChange))
将ColToChange
值设置为Name
,而不是恢复为原始值。因此,我试图使用上面的语法来实现这一目标:
df %>% mutate( !!ColToChange := ifelse(X >= 0.5 & Y >= 0.5, ToChangeTo, Name))
但不是Name
,而是将其作为向量。
答案 0 :(得分:5)
您需要先使用SELECT id, COUNT(*) FROM completed_consumers WHERE consu_id=$consu_id GROUP BY consu_id
将rlang:sym
评估为符号ColToChange
,然后将其评估为Name
列:
!!