如何提供现有变量以通过引用进行变异?
How to supply existing variable to mutate through reference?
这是我的数据:
df <- tibble::tribble(
~A, ~B,
"C", "G",
"D", "H",
"E", "I",
"F", "J")
df$A <- as.factor(df$A)
var <- "A"
而且,我想使用类似这样的 rlang 将 A 从 C 重新升级到 E,但它不起作用!
var <- syms(var)
df <- df %>% mutate(!!!var = fct_relevel(!!!var, "E"))
我想要的输出是:
df <- df %>% mutate(A = fct_relevel(A, "E"))
levels(df$A)
但我不想手动提供 A,而是想以编程方式提供这些,使用 var 字符向量符合 rlang syms 的内容。
我应该怎么做?
我同意@alistaire 的评论,但就其价值而言,正确的 rlang
语法应该是:
df <- df %>% mutate(!!var := fct_relevel(!!rlang::sym(var), "E"))
levels(df$A);
#[1] "E" "C" "D" "F"
示例数据
df <- tibble::tribble(
~A, ~B,
"C", "G",
"D", "H",
"E", "I",
"F", "J")
df$A <- as.factor(df$A)
var <- "A"
这是我的数据:
df <- tibble::tribble(
~A, ~B,
"C", "G",
"D", "H",
"E", "I",
"F", "J")
df$A <- as.factor(df$A)
var <- "A"
而且,我想使用类似这样的 rlang 将 A 从 C 重新升级到 E,但它不起作用!
var <- syms(var)
df <- df %>% mutate(!!!var = fct_relevel(!!!var, "E"))
我想要的输出是:
df <- df %>% mutate(A = fct_relevel(A, "E"))
levels(df$A)
但我不想手动提供 A,而是想以编程方式提供这些,使用 var 字符向量符合 rlang syms 的内容。
我应该怎么做?
我同意@alistaire 的评论,但就其价值而言,正确的 rlang
语法应该是:
df <- df %>% mutate(!!var := fct_relevel(!!rlang::sym(var), "E"))
levels(df$A);
#[1] "E" "C" "D" "F"
示例数据
df <- tibble::tribble(
~A, ~B,
"C", "G",
"D", "H",
"E", "I",
"F", "J")
df$A <- as.factor(df$A)
var <- "A"