2014-07-01 2 views
0

Je suis très nouveau à R et cela pourrait être un très question idiote à poser mais je suis assez coincé en ce moment.Analyse CCA: Erreur dans weighted.mean.default (newX [, i], ...): 'x' et 'w' doivent avoir la même longueur

J'essaie actuellement de faire une analyse de correspondance canonique sur mes données pour voir quels facteurs environnementaux ont plus de poids sur la distribution communautaire. J'utilise le paquet végétalien. Mes données consistent en un tableau pour les facteurs environnementaux (ensemble de données EFamoA) et un autre pour une matrice d'abondance (ensemble de données AmoA). J'ai 41 sols, avec 39 facteurs environnementaux et 334 espèces. Après avoir nettoyé mes données de toutes les variables qui ne sont pas numériques, je tente d'effectuer l'analyse de cca utilisant la notation de formule:

CCA.amoA <- cca (AmoA ~ EFamoA$PH + EFamoA$LOI, data = EFamoA, 
scale = TRUE, na.action = na.omit) 

Mais je reçois cette erreur:

Error in weighted.mean.default(newX[, i], ...) : 
'x' and 'w' must have the same length 

Je ne Je sais vraiment où aller à partir d'ici et n'ai pas trouvé beaucoup de choses concernant ce problème partout (ce qui me conduit à penser que ce doit être une sorte d'erreur très basique que je fais). Mes données sur les facteurs environnementaux ne sont pas normalisées comme je le vois dans le fichier d'aide de cca que l'algorithme le fait mais peut-être devrais-je le standardiser auparavant? (J'ai aussi rouge cette échelle = TRUE est seulement pour les espèces). Dois-je convertir les données en matrices?

J'espère avoir suffisamment clarifié mon point de vue car je me bats depuis un moment maintenant.

Edit: Mes données environnementales a NA valeurs

+0

Je suppose que ce n'est pas la bonne façon d'appeler 'cca'. Dans 'EFamoA', vous devez avoir les colonnes' AmoA', 'PH' et' LOI' ensemble. Et vous pouvez éviter l'utilisation de '$'. –

+0

Le fait est que AmoA n'est pas seulement une colonne mais un tableau complet par lui-même où les lignes sont des espèces et les colonnes sont des sols et cela crée une matrice d'observation des espèces par sol, alors que EFamoA est un tableau des facteurs environnementaux et leurs valeurs dans chaque sol. Je pourrais essayer de créer de nouvelles variables pour chaque EF afin que je puisse éviter l'utilisation de $ mais je ne sais pas si cela fonctionnerait. Merci beaucoup pour le commentaire de toute façon. –

Répondre

0

Bon donc j'ai pu le comprendre par moi-même et il était en effet une chose stupide, tourne mes données sur l'abondance avaient des sols comme des colonnes et des espèces sous forme de lignes, tandis que les données sur le facteur environnemental (EF) ont des sols sous forme de lignes et EF comme colonnes. En utilisant sur mes données, j'ai transposé mon data.frame (et collatéralement converti en une matrice) et cca() travaillé (comme "longueur" était le même, je suppose). Transposer les données séparément et les charger déjà transposées fonctionne aussi. Bien que l'approche t() permette d'économiser le besoin de créer un nouveau fichier (au cas où vos données seraient organisées en utilisant des lignes différentes comme dans mon cas), il convertit les données en une matrice et cela peut ne pas être souhaitable dans certains cas , cela s'est avéré être une chose très simple et évidente à résoudre (cela m'a pris un moment cependant).

Questions connexes