作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将一个命名向量或两个向量传递给 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,但如果有人能让事情顺利进行那就太好了。
谢谢。
最佳答案
我们可以在base R
中做到这一点
x1 <- unname(setNames(recode_tbl$fruit, recode_tbl$letter)[x])
x1[is.na(x1)] <- x[is.na(x1)]
<小时/>
或者使用do.call
和recode
do.call(dplyr::recode, c(list(x), setNames(recode_tbl$fruit, recode_tbl$letter)))
#[1] "customer" "apple" "banana" "banana" "cranberry" "apple"
#[8] "cranberry" "cranberry" "banana" "banana" "apple"
关于r - 如何将一个命名向量或两个向量作为参数传递给 dplyr::recode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45164997/
我是一名优秀的程序员,十分优秀!