我想基于给定的字符向量添加新列。
例如,在下面的示例中,我想添加在
然而,在下面的代码中,虽然计算本身(即添加)是有效的,但新列的名称与我的预期不同。
expr
中定义的d
列。library(magrittr)
data <- tibble::tibble(
a = c(1, 2),
b = c(3, 4)
)
expr <- "d = a + b"
just as below:
data %>%
dplyr::mutate(d = a + b)
# # A tibble: 2 x 3
# a b d
# <dbl> <dbl> <dbl>
# 1 1 3 4
# 2 2 4 6
然而,在下面的代码中,虽然计算本身(即添加)是有效的,但新列的名称与我的预期不同。
data %>%
dplyr::mutate(!!rlang::parse_expr(expr))
# # A tibble: 2 x 3
# a b `d = a + b`
# <dbl> <dbl> <dbl>
# 1 1 3 4
# 2 2 4 6
data %>%
dplyr::mutate(!!rlang::parse_quo(expr, env = rlang::global_env()))
# # A tibble: 2 x 3
# a b `d = a + b`
# <dbl> <dbl> <dbl>
# 1 1 3 4
# 2 2 4 6
data %>%
dplyr::mutate(rlang::eval_tidy(rlang::parse_expr(expr)))
# # A tibble: 2 x 3
# a b `rlang::eval_tidy(rlang::parse_expr(expr))`
# <dbl> <dbl> <dbl>
# 1 1 3 4
# 2 2 4 6
如何正确使用dplyr :: mutate中的表达式?
我的问题类似于这个问题,但在我的例子中,新变量(d
)及其定义(a + b
)以单个字符向量形式给出(expr
)。
mutate
内部的工作原理。 - Koopa