aaaaaaaaaaaaaaaa
Lors de l'application d'une opération à deux vecteurs qui nécessitent qu'ils aient la même longueur, R recycle automatiquement, ou le répète, le plus court, jusqu'à ce qu'il soit suffisamment long pour correspondre le plus long. Voici un exemple:
Message d'avertissement: longueur d'objet plus longue
n'est pas un multiple de longueur d'objet plus courte dans: c (1, 2, 4) + c (6, 0, 9, 20, 22)
Le vecteur plus court a été recyclé, de sorte que l'opération a été prise comme suit:
Voici un exemple plus subtil:
Encore une fois, gardez à l'esprit que les matrices sont en fait des vecteurs longs. Ici, x, en tant que matrice 3 par 2, est également un vecteur à six éléments, qui dans R est stocké en colonne par colonne. En d'autres termes, en termes de stockage, x est le même que c (1,2,3,4,5,6). Nous avons ajouté un vecteur à deux éléments à cet élément à six éléments, de sorte que notre vecteur ajouté devait être répété deux fois pour créer six éléments. En d'autres termes, nous procédions essentiellement à cela:
Non seulement cela, mais c (1,2,1,2,1,2) a également été changé d'un vecteur à une matrice ayant la même forme que x avant l'addition a eu lieu:
1 2
2 1
1 2
Ainsi, le résultat net était de calculer ce qui suit:
Les éléments d'un vecteur peuvent éventuellement être nommés. Par exemple, disons que nous avons un vecteur à 50 éléments montrant la population de chaque état aux États-Unis. Nous pourrions nommer chaque élément en fonction de son nom d'état, comme «Montana» et «New Jersey». Cela pourrait entraîner des points de dénomination dans les parcelles, et ainsi de suite.
Nous pouvons assigner ou interroger des noms d'éléments vectoriels via la fonction names ():
Nous pouvons supprimer les noms d'un vecteur en assignant NULL:
Nous pouvons même référencer les éléments du vecteur par nom:
Supposons que nous souhaitons tester si deux vecteurs sont égaux. L'approche naïve, utilisant ==, ne fonctionnera pas.
Qu'est-il arrivé? Le point essentiel est que nous traitons de la vectorisation. Tout comme presque n'importe quoi dans R, == est une fonction.
En fait, == est une fonction vectorisée. L'expression x == y applique la fonction == () aux éléments de x et y. donnant un vecteur de valeurs booléennes.
Que peut-on faire à la place? Une option est de travailler avec la nature vectorisée de ==, en appliquant la fonction all ():
L'application de all() au résultat de == demande si tous les éléments de ce dernier sont vrais, ce qui est identique à savoir si x et y sont identiques.
Ou encore mieux, nous pouvons simplement utiliser la fonction identique, comme ceci:
Soyez prudent, bien que le mot identique signifie vraiment ce qu'il dit. Considérons cette petite session R:
Ainsi,: produit des nombres entiers tandis que c () produit des nombres à virgule flottante. Qui savait?