2013-07-22 6 views
1

J'essaie de trouver un moyen d'insérer NA valeurs dans un vecteur/matrice R. Je l'ai utilisé quelques trucs de manipulation comme:NA Insertion dans un tableau

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

Ainsi, cette condition entrées manipule du vecteur basé sur leurs valeurs, mais je ne suis pas sûr de savoir comment faire ce type de méthode en insérant des valeurs NA puisque quelque chose comme values = (values %% 2 == 0)*(values) + (values%%2 == 1)*(NA) ne produira que des NA pour tout le vecteur.

J'ai trouvé que je peux faire quelque chose comme ce qui suit:

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

Mais je espérais quelque chose d'un peu plus concise, comme dans l'exemple précédent. Des pensées?

Répondre

1

Vous n'avez pas besoin d'utiliser des astuces et résumer tout, cela suffit:

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

comme ça?

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

En fait, il est plus sûr d'écrire:

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