如何使用 mutate 将向量列表分配给 r 中的新 var 名称列表
how to use mutate to assign a list of vectors to a list of new var names in r
我正在构建一个函数,您可以提供一个数据框和一个数字变量名称向量 - 我希望它 return 一个数据框,每个数字向量都有一个对应的变量,将其拆分为间隔。
我知道如何使用一个变量,但是使用多个变量名称我得到 "Error: The LHS of :=
can't be spliced with !!!
"。
这是一个可重现的例子:
library(tidyverse)
vars <- c("wt", "qsec")
new_vars <- map_chr(vars, ~ paste0(.x, "_bin"))
bins <- map(vars, ~ quantile(mtcars[,.x], na.rm = T))
result <- mtcars %>%
mutate(!!!new_vars := map2(vars, bins, ~ cut(mtcars[,.x], breaks = .y)))
我想要得到的是 mtcars 但有 2 个额外的列。
1. wt_bin - 这将是 "wt" 匹配的分位数间隔
2. qsec_bin - 这将是 "qsec" 匹配到
的分位数间隔
我知道它与 !!!new_vars :=
有关,但我似乎无法准确理解问题所在。
谢谢!
你可以不用 mutate
也能躲开 nse
:
map2_dfc(vars, bins, ~ cut(mtcars[, .x], .y, labels = F)) %>%
set_names(new_vars) %>%
bind_cols(mtcars, .)
我们可以使用 :=
和 transmute
library(tidyverse)
map2_dfc(vars, bins, ~
mtcars %>%
transmute(!! paste0(.x, "_bin") :=
cut(!! rlang::sym(.x), breaks = .y))) %>%
bind_cols(mtcars,.)
我正在构建一个函数,您可以提供一个数据框和一个数字变量名称向量 - 我希望它 return 一个数据框,每个数字向量都有一个对应的变量,将其拆分为间隔。
我知道如何使用一个变量,但是使用多个变量名称我得到 "Error: The LHS of :=
can't be spliced with !!!
"。
这是一个可重现的例子:
library(tidyverse)
vars <- c("wt", "qsec")
new_vars <- map_chr(vars, ~ paste0(.x, "_bin"))
bins <- map(vars, ~ quantile(mtcars[,.x], na.rm = T))
result <- mtcars %>%
mutate(!!!new_vars := map2(vars, bins, ~ cut(mtcars[,.x], breaks = .y)))
我想要得到的是 mtcars 但有 2 个额外的列。 1. wt_bin - 这将是 "wt" 匹配的分位数间隔 2. qsec_bin - 这将是 "qsec" 匹配到
的分位数间隔我知道它与 !!!new_vars :=
有关,但我似乎无法准确理解问题所在。
谢谢!
你可以不用 mutate
也能躲开 nse
:
map2_dfc(vars, bins, ~ cut(mtcars[, .x], .y, labels = F)) %>%
set_names(new_vars) %>%
bind_cols(mtcars, .)
我们可以使用 :=
和 transmute
library(tidyverse)
map2_dfc(vars, bins, ~
mtcars %>%
transmute(!! paste0(.x, "_bin") :=
cut(!! rlang::sym(.x), breaks = .y))) %>%
bind_cols(mtcars,.)