longueur de l’object plus longue n’est pas un multiple de la longueur de l’object plus court

Un véritable débutant dans l’environnement R, je passe en revue le livre “Introduction to R”.

Là, dans un exemple, l’auteur suggère que ”

Les vecteurs plus courts dans l’expression sont recyclés aussi souvent que nécessaire (peut-être fractionnellement) jusqu’à ce qu’ils correspondent à la longueur du vecteur le plus long.

Immédiatement après, il y a cet exemple … dans lequel il suggère qu’un vecteur serait répété 2,2 fois …

Cependant, quand j’ai répliqué le même exemple sur mon système (Ubuntu 64b, R-v2.4.11), j’ai eu ce message d’erreur

x [1] 2 5 8 6 11 > y [1] 23 11 > v=2*x+y+1 Warning message: In 2 * x + y : longer object length is not a multiple of shorter object length > v [1] 28 22 40 24 46 

Essayé de chercher à travers google, stackoverflow en interne aussi, mais n’a rien trouvé de satisfaisant … Suis-je manquant quelque chose ici? Y a-t-il quelque chose avec la version de RI que j’utilise?

Lorsqu’un vecteur est recyclé, il affiche un message d’avertissement s’il doit être “coupé” avant la fin. (comme mentionné ci-dessous, ceci n’est PAS un message d’erreur. Error = R ne peut pas terminer la fonction à laquelle vous le souhaitez et se ferme donc. Warning = R a trouvé quelque chose d’étrange à propos de ce que vous lui demandez il.*)

Par exemple:

 c(1,2) * c(1,2,3,4) 

Est équivalent à:

 c(1,2,1,2) * c(1,2,3,4) 

Et affiche aucun message d’avertissement. Mais:

 c(1,2) * c(1,2,3,4,5) 

Est équivalent à:

 c(1,2,1,2,1) * c(1,2,3,4,5) 

Et affiche un message d’avertissement, car le dernier élément du vecteur coercitif n’est pas le dernier élément du vecteur d’origine. Il fera toujours le travail et vous donnera une réponse. L’avertissement n’est qu’un avertissement. Voir ?warning

* Voir la section 2 de cet article