2017-06-14 1 views
1

J'essaye d'exécuter la fonction betadisper (paquet vegan) et renvoie une erreur. C'est ce que je fais:Erreur dans la fonction betadisper - paquet vegan

hom.cov <- betadisper(morf.dist, sexo) 

et retorns pour moi cette erreur:

Error in sort.list(y) : 'x' must be atomic for 'sort.list' 
Have you called 'sort' on a list? 

Alors je cours à retraçage:

traceback() 
5: stop("'x' must be atomic for 'sort.list'\nHave you called 'sort' on 
a list?") 
4: sort.list(y) 
3: factor(x) 
2: as.factor(group) 
1: betadisper(morf.dist, sexo) 

Quand j'ai vu cela, j'essayé de convertir le vecteur "sexo" dans le facteur avec "as.factor" et puis exécutez à nouveau, mais il m'a retourné la même erreur. J'ai donc essayé de courir « betadisper() » avec l'utilisation par exemple dans « l'écologie numérique avec R » et me donner une autre erreur:

env <- read.csv("DoubsEnv.csv", row.names=1) 
env.pars2 <- as.matrix(env[, c(1, 9, 10)]) 
env.pars2.d1 <- dist(env.pars2) 
(env.MHV <- betadisper(env.pars2.d1, gr)) 
Error in x - c : arreglos de dimensón no compatibles 

traceback() 
2: Resids(vectors[, pos, drop = FALSE], centroids[group, pos, drop = 
FALSE]) 
1: betadisper(env.pars2.d1, gr) 

Je ne sais pas ce qui pourrait happend. Quelqu'un peut-il m'aider?

Merci!

Répondre

1

R revendique que sexo n'est pas atomique. Ce n'est pas le message le plus évident, mais cela signifie que sexo n'est pas un simple vecteur de valeurs, mais peut être, disons, une trame de données ou une liste. Problème

str(sexo) 

et de voir ce que vous obtenez. Si vous voyez un texte comme data.frame ou list dans la sortie, puis un signe dollar ($) alors vous n'avez pas une structure simple. Par exemple, la sortie suivante est pas un élément atomique:

> str(a) 
List of 1 
    $ a: Factor w/ 4 levels "BF","HF","NM",..: 4 1 NA 4 2 2 2 2 2 1 ... 

Dans ce cas, vous devez utiliser a$a au lieu de seulement a.

+0

Bonjour, Merci pour la réponse. J'utilise, comme vous l'avez dit, «sexo $ Sexo» et la fonction fonctionne correctement. Merci beaucoup. Mauro –