R: Remplacer les valeurs négatives par zéro
Nous voulons mettre toutes les valeurs dans un tableau à zéro qui sont négatifs.
J'ai essayé beaucoup de choses mais n'a pas encore de parvenir à une solution de travail.
J'ai pensé à une boucle for à la condition, toutefois, cela ne semble pas fonctionner.
#pred_precipitation is our array
pred_precipitation <-rnorm(25,2,4)
for (i in nrow(pred_precipitation))
{
if (pred_precipitation[i]<0) {pred_precipitation[i] = 0}
else{pred_precipitation[i] = pred_precipitation[i]}
}
Merci pour vos conseils!
source d'informationauteur Fabian Stolz
Vous devez vous connecter pour publier un commentaire.
Merci pour la reproductible exemple. C'est assez basique R trucs. Vous pouvez attribuer à certains éléments d'un vecteur (note une matrice a de dimensions, et ce que vous avez fournie est un vecteur non pas un tableau):
De référence wars!
@James a trouvé une même méthode la plus rapide et la laisser dans un commentaire. Je upvoted lui, si seulement parce que je sais que sa victoire sera de courte durée.
Tout d'abord, j'essaie de compiler, mais cela ne semble pas aider quelqu'un:
Mais attendez! Dirk a écrit ce Rcpp chose. Pouvez complet C++ incompétents lire son JSS papier, d'adapter son exemple, et écrire de la manière la plus rapide de la fonction de tous? Restez à l'écoute, chers auditeurs.
Que affirmative, capitaine.
Cela modifie l'entrée
p
même si vous n'affectez pas. Si vous voulez éviter ce comportement, vous devez cloner:Qui, malheureusement, tue l'avantage de vitesse.
Je voudrais utiliser
pmax
parce queifelse
peut être un peu lent à certains moments et sous-ensemble de remplacement donne un vecteur (qui peut être un problème avec de grands ensembles de données).Sous-ensemble de remplacement est de loin la manière la plus rapide:
Alternativement, vous pouvez également utiliser
ifelse
: