【发布时间】:2021-03-30 17:45:37
【问题描述】:
根据@akrun 的见解编辑:
这行得通:
require("magrittr")
requireNamespace("dplyr")
df <- data.frame(a = 1:5)
b_column <- c_column <- "a"
df %>% dplyr::mutate(
b = !!dplyr::sym(b_column),
c = !!dplyr::sym(c_column))
但是当*_columns 中的任何一个是NULL 时,它不会:
c_column <- NULL
df %>% dplyr::mutate(
b = !!dplyr::sym(b_column),
c = !!dplyr::sym(c_column))
产生的错误是:
Error: Only strings can be converted to symbols
Run `rlang::last_error()` to see where the error occurred.
我将如何调用任何 ensymboled *_column 变量以适应 NULL?
【问题讨论】:
-
NULL不是字符串,列名不能是NULL -
好吧,但是在匹配参数时,潜在的字符串默认为 NULL 是很常见的......
-
你需要
if(!is.null(c)) df %>% dplyr::mutate(b = !!dplyr::sym(c))