如何替换R中矢量的特定值?

时间:2016-09-25 19:03:44

标签: r vector

我一直在寻找一个替换矢量特定值的函数。例如,您有一个包含值ABCDNA的字符向量,并且您想要替换{{1} } AE NA

我已经尝试编写一个函数并提出了以下内容。它似乎工作正常,但有问题,包括它将因子转换为字符。

F

例如:

recode <- function(x, old, new) {
    u <- rep(NA, length(x))
    for (i in 1:length(old)) {
        if(is.na(old[i])) {
            u[is.na(x)] <- new[i]
        } else {
        u[x == old[i]] <- new[i]
        }
    }
    return(ifelse(x %in% old, u, x))
}

也许已经有一个功能可以做到这一点,我只是没有找到它!或者有人知道这样做的合理方法吗?

1 个答案:

答案 0 :(得分:1)

我建议您在较新版本的dplyr中使用library(dplyr) a <- sample(c("A", "B", "C", "D", NA), 20, replace = T) recode(a, A = "E", .missing = "F")

dplyr::recode_factor

请注意,还有{{1}},它有一些特定于因素的功能(维护顺序)。