Pourquoi suis-je “avertissement plus de l'objet de la longueur n'est pas un multiple de la plus courte de l'objet longueur”?
J'ai dataframe dih_y2. Ces deux lignes de me donner un avertissement:
> memb = dih_y2$MemberID[1:10]
> dih_col = which(dih_y2$MemberID == memb)
Warning message:
In dih_y2$MemberID == memb :
longer object length is not a multiple of shorter object length
Pourquoi?
Vous devez vous connecter pour publier un commentaire.
Vous ne donnez pas un exemple reproductible, mais votre message d'avertissement vous indique exactement quel est le problème.
membres seulement a une longueur de 10. Je devine que la longueur de dih_y2$MemberID n'est pas un multiple de 10. Lors de l'utilisation d' == il va cracher un avertissement si elle n'est pas un multiple de vous laisser savoir que ce n'est probablement pas ce que vous attendez de la il est en train de faire. == ne elementwise la vérification de l'égalité. Je soupçonne ce que vous voulez faire si trouver les éléments de
dih_y2$MemeberID
sont également dans le vecteurmemb
. Pour ce faire, vous pouvez utiliser la%in%
opérateur.Lorsque vous effectuez un booléen comparaison entre deux vecteurs dans R, "l'attente", c'est que les deux vecteurs sont de même longueur, de sorte que R peut comparer chaque élément correspondant à tour de rôle.
R a beaucoup aimé (ou détesté) fonctionnalité appelée recyclage, de sorte que dans de nombreux cas, si vous essayez de faire quelque chose où R pourrait normalement s'attendre objets à être de la même longueur, il sera automatiquement étendre ou de les recycler, la plus courte de l'objet à force de les deux objets de la même longueur.
Si plus d'objet est un multiple de la plus courte, cela revient à répéter simplement la plus courte de l'objet à plusieurs reprises. Souvent les programmeurs R va en profiter pour faire les choses de manière plus compacte et avec moins de frappe.
Mais si ils ne sont pas des multiples, R s'inquiéter que vous avez fait une erreur, et peut-être ne veut pas dire pour effectuer cette comparaison, d'où l'avertissement.
Explorer vous-même avec le code suivant:
J'ai eu un problème similaire, mais il avait à faire avec la structure et la classe de l'objet. Je voudrais vérifier comment
dih_y2$MemberID
est formaté.J'ai eu un problème similaire et en utilisant
%in%
opérateur au lieu de la==
(égalité) de l'opérateur a été la solution:Espère que cela aide.