2016-09-25 79 views
-1

我一直在尋找一個替代矢量的特定值的函數。例如,你有包括值ABCDNA一個特徵向量,並希望與ENAF更換A如何替換R中矢量的特定值?

我試着寫一個函數,並提出了下面。它似乎工作正常,但有問題,包括它將因素轉換爲字符。

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)) 
} 

例如:

a <- sample(c("A", "B", "C", "D", NA), 20, replace = T) 
recode(a, old = c("A", NA), new = c("E", "F")) 

或許已經存在,做這樣的功能,我只是還沒有找到它!還是有人知道一個明智的方法來做到這一點?

回答

1

我建議您在dplyr的較新版本中使用dplyr::recode

library(dplyr) 

a <- sample(c("A", "B", "C", "D", NA), 20, replace = T) 
recode(a, A = "E", .missing = "F") 

注意,也有dplyr::recode_factor,其中有一對夫婦的特定因子的功能(維持秩序)。

+0

謝謝邁克爾 - 這正是我正在尋找的。 –