affecter une valeur, si un numéro est dans l'entre deux nombres
Im essayant d'affecter la valeur de -1, pour chaque numéro dans mon vecteur qui se trouve entre 2 et 5.
J'ai pensé à une instruction if - then serait de travailler. Je vais avoir quelques problèmes. Je ne pense pas (2
x <- c(3.2,6,7.8,1,3,2.5)
if (2<x<5){
cat(-1)
} else {
cat (x)
}
Vous devez vous connecter pour publier un commentaire.
Il y a un certain nombre d'erreur de syntaxe dans votre code.
Essayez d'utiliser
findInterval
lire
?findInterval
pour plus de détails sur l'utilisation defindInterval
Vous pouvez également utiliser
replace
Noter que
2<x<5
vous avez besoin d'écrirex > 2 & x < 5
cat
sera sortie de la console ou un fichier /de connexion. Il ne sera pas affecter quoi que ce soit.Vous voulez probablement seulement pour remplacer ces éléments avec -1.
Vous pouvez également utiliser
ifelse
.J'ai comparé les solutions avec
microbenchmark
:Voici les résultats:
Vous devriez prendre
findInterval
.Veuillez envisager de le comparer à
1L
au lieu de1
.Il est près de deux fois plus vite.
Ici est une autre approche qui est un peu plus semblable à l'original:
%<%
n'? Je n'ai pas vu celui-ci avant, il vectoriser le<
opération, comme la%in%
?help("%<%", package=TeachingDemos)
. Mais fondamentalement, il permet le chaînage comme ci-dessus. Il fait la même chose que<
mais l'attache, les valeurs d'origine que les attributs et les vérifie quand enchaîné.Ma préférence pour l'attribution d'une valeur à une variable basée sur un cadre clairement défini numérique de l'intervalle est de l'utilisation de la base de R syntaxe:
Je pense que cette syntaxe est plus clair que n'importe quel nombre de fonctions R, en grande partie parce que le code peut être rapidement adaptés à spécifier inclusive vs exclusif des intervalles. Dans la pratique, il est assez fréquent de rencontrer des situations où un intervalle peut être défini comme étant soit inclusive (c'est à dire, [-x +x]) ou exclusif (c'est à dire, (-x +x)) ou une combinaison des deux (c'est à dire, [-x +x)).
En outre, la syntaxe de base fournit la clarté du code, si quelqu'un d'autre est en train d'examiner plus tard. Chaque unique de la bibliothèque de fonctions semble avoir sa propre et une syntaxe légèrement différente pour atteindre le même niveau de spécificité comme définissant clairement les intervalles à l'aide de la base de R de la syntaxe.