NAs ne sont pas autorisés à souscrire à l'utilisation des affectations

J'ai une question simple, mais je n'arrivais pas à saisir la logique de la surmonter.

J'ai numériques vecteurs avec NAs et souhaitez appliquer une condition dépendant de l'opération.

Un exemple simple de similaire à mon problème est le suivant:

x <- c(1,3,5,7,NA,2,4,6)
x[x>=5] <- c(1:8)[x>=5]
x[x<5] <- (c(1:8)*10)[x<5]

Elle renvoie l'erreur "NAs ne sont pas autorisés dans indicée missions", donc je voudrais savoir ce qui serait une solution sensée pour que, étant donné que l'exécution de chaque attribution séparément fonctionne comme prévu.

Je voudrais avoir le résultat attendu:

[1]  10  20  3  4 NA  60  70  8

De préférence sans avoir à faire une boucle for, comme cette opération est déjà en fonction pour les nuls la modélisation avec beaucoup d'itérations qui prend les âges.

Vous en remercie d'avance,
Leonardo

C'est très intéressant. Il semble que vous ne pouvez pas combiner des nombres entiers avec NA tout. et en attribuant uniquement si vous avez plus d'un valeur de l'ERS... I. e. x[c(NA, 1)] <- 100 et x[NA] <- 100 à la fois travailler, tandis que x[c(NA, 1)] <- 100:101 ou x[NA] <- 100:101 ne
C'est une précieuse question qu'il obtient à ce message d'erreur. Mais il est important de noter que même si votre code a fonctionné sans le NA-a causé des erreurs, il ne serait pas produire le résultat escompté. La ligne 2 de votre code serait de remplacer les valeurs d'origine de 5 et 7 que vous avez utilisé pour prédire le résultat de 3 et 4 ci-dessus (au lieu de 30 et 40), et ils seraient 3 et 4 de la ligne de temps 3 est appelé, à l'origine à devenir 30 et 40. Essayez: x[x>=5 & !is.na(x)] <- c(1:8)[x>=5 & !is.na(x)] ; x[x<5 & !is.na(x)] <- (c(1:8)*10)[x<5 & !is.na(x)]

OriginalL'auteur LeoRJorge | 2014-11-12