En R, disons que nous avons un vecteur
area = c(rep(c(26:30), 5), rep(c(500:504), 5), rep(c(550:554), 5), rep(c(76:80), 5))
et un autre vecteur yield = c(1:100)
.
Maintenant, que je veux à l'index comme ceci:R: vecteurs d'indexation par comparaison booléenne d'une valeur dans la plage: indice == c (min: max)
> yield[area==27]
[1] 2 7 12 17 22
> yield[area==501]
[1] 27 32 37 42 47
Pas de problème, non? Mais des choses étranges commencent à se produire lorsque j'essaie de l'indexer en utilisant c(A, B)
. (Et encore plus étrange lorsque je tente c(min:max)
...)
> yield[area==c(27,501)]
[1] 7 17 32 42
Ce que je me attends est bien sûr les cas qui sont présents dans les deux autres exemples, non seulement une combinaison bizarre d'entre eux. Cela fonctionne quand je peux utiliser le tuyau opérateur OR:
> yield[area==27 | area==501]
[1] 2 7 12 17 22 27 32 37 42 47
Mais si je travaille avec une gamme? Dites que je veux l'indexer par la gamme c(27:503)
? Dans mon exemple réel, il y a beaucoup plus de points de données et les plages, il est plus logique, s'il vous plaît ne suggèrent pas que je le fais à la main, ce qui signifierait essentiellement:
yield[area==27 | area==28 | area==29 | ... | area==303 | ... | area==500 | area==501]
Il doit y avoir une meilleure façon. ..
Impressionnant, merci :) Aussi, où est-ce documenté? Comment suis-je supposé le trouver sans demander? Qu'est-ce que je demande à l'aide? L'aide inutile que je l'appelle: P – gakera
@gakera: c'est dans '? Match'. Vous êtes censé le trouver en devinant de meilleurs mots-clés ou en lisant le manuel de référence complet. :-P Je crois que je suis tombé sur 'match' pour la première fois via la section" Voir aussi "de'? Grep'. –
Haha, devinant de meilleurs mots-clés ou en lisant le manuel complet, je l'aime! R est tellement convivial: D Merci encore. – gakera