r语言 - 在列表定义中使用 rlang::sym



我正在编写一个R脚本,我需要允许用户指定将手动处理的变量的名称,即

var <- 'user_name'

通常,我使用rlang::sym和引用/取消引用机制来指代。但是,我需要使用tidyr::replace_na并且我的想法在这里都没有奏效,因为必须在list中指定变量的名称。

在这种情况下,我该如何参考我的var?我在想下面这样的事情:

data <- data %>% replace_na(list(sym(var) = 0))

但是它没有用...

我们也可以把replace_na放在mutate里面并取消引用:

library(dplyr)
library(tidyr)
var <- 'user_name'
data %>%
mutate(!!var := replace_na(!!sym(var), 0))

结果:

user_name
1         0
2         1
3         2
4         3
5         4
6         5

数据:

data <- data.frame(user_name = c(NA, 1:5))

不使用除dplyr/tidyr以外的任何外部包,我们可以用setNames来更改它

library(dplyr)
library(tidyr)
data %>% 
replace_na(as.list(setNames(0, var)))
#   user_name
#1         0
#2         3
#3         4

数据

data <- data.frame(user_name = c(NA, 3, 4))

相关内容

  • 没有找到相关文章

最新更新