我正在编写一个 R 脚本,我需要允许用户指定将手动处理的变量的名称,即
var <- 'user_name'
一般来说,我指的是使用rlang::sym
和引用/取消引用机制。但是,我需要使用tidyr::replace_na
并且我的想法在这里都不起作用,因为变量的名称必须在list
.
var
在这种情况下我该如何参考我的?我在想像下面这样的事情:
data <- data %>% replace_na(list(sym(var) = 0))
但它没有用...
我正在编写一个 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))