2016-09-25 9 views
-1

私はベクトルの特定の値を置き換える関数を探していました。たとえば、値ABCDNAを含む文字ベクトルを持っている、とあなたはFENAAを交換したいです。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::recodeを使用することをお勧めします。

library(dplyr) 

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

因子固有の機能(順序を維持する)のカップルを有するdplyr::recode_factorもあることに注意してください。

+0

マイケルありがとう - それは私が探していたものです。 –

関連する問題