2013-07-22 80 views
1

我試圖找到一種方法來插入NA值成矢量/ R中矩陣我使用了一些技巧的操作,如:NA插入到一個數組

values = *expression* #assume values is a populated vector 
    values = (values %% 2 == 0)(values/2) + (values%%2 == 1)*(3*values + 1) 

所以,這個有條件操縱條目的矢量,但我不確定在插入NA值時如何執行這種類型的方法,因爲像values = (values %% 2 == 0)*(values) + (values%%2 == 1)*(NA)之類的東西只會產生整個矢量的NA。

我發現我可以做類似如下:

for(i in 1:length(values)) 
    { 
     if(values[i] %% 2 == 1){values[i] = NA} 
    } 

但我希望的東西多一點簡潔,像前面的例子。有什麼想法嗎?

回答

1

你並不需要使用技巧和總結什麼,這樣就足夠了:

values = ifelse(values %% 2 == 0, values/2, NA) 
1

這樣嗎?

v = (values %% 2 == 0)*(values/2) + ifelse(values%%2 == 1, NA, 0) 

其實是比較安全的寫:

v = ifelse(values %% 2 ==0, values/2, 0) + ifelse(values%%2 == 1, NA, 0) 
1
values[values %% 2 == 1] <- NA