我希望能够将命名向量或两个向量传递给dplyr :: recode函数。
假设我有:
library(dplyr)
set.seed(1)
x <- c("customer", sample(c("a", "b", "c"), 10, replace = TRUE))
recode_tbl <- tibble(letter = letters[1:3], fruit = c("apple", "banana", "cranberry"))
我想做的是使用recode_tbl的列来对x进行重新编码,而不需要手动指定成对的内容,例如:
recode(x, a = "apple", b = "banana", c = "cranberry")
以下是一个示例:
recode(x, as.name(recode_tbl$letter) = recode_tbl$fruit)
显然那样做行不通。我不反对尝试 NSE,如果有人能开始推进,那就太好了。
谢谢。
purrr
中的map
方法来实现。 - akrunxt <- tibble(Customer = sample(c("a", "b", "c"), 20, replace = TRUE))
do.call(dplyr::recode, c(list(xt$Customer), setNames(recode_tbl$fruit, recode_tbl$letter)))
- astainesrecode(x, !!!setNames(recode_tbl$fruit, recode_tbl$letter))
。 - Reinhold Kainhofer