betadisper函数中的错误-纯素软件包

betadisper函数中的错误-纯素软件包,r,vegan,R,Vegan,我试图运行betadisper函数(vegan包),它返回一个错误。我就是这么做的: hom.cov <- betadisper(morf.dist, sexo) 然后我跑去追踪: 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: betadis

我试图运行betadisper函数(vegan包),它返回一个错误。我就是这么做的:

hom.cov <- betadisper(morf.dist, sexo)
然后我跑去追踪:

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)
当我看到这一点时,我尝试将factor中的向量“sexo”转换为“as.factor”,然后再次运行,但它返回给我相同的错误。因此,我尝试运行“betadisper()”并使用“带R的数值生态学”中的示例,并给出另一个错误:

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)

envR声称
sexo
不是原子的。这不是最明显的信息,但它意味着
sexo
不是一个简单的值向量,但它可能是,比如,一个数据帧或一个列表。发行

str(sexo)
看看你能得到什么。如果在输出中看到像
data.frame
list
这样的文本,然后看到一个美元符号(
$
),那么就没有简单的结构。例如,以下输出不是原子项:

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

在这种情况下,您应该使用
a$a
,而不仅仅是
a

您好,谢谢您的回答。正如您所说,我使用了
sexo$sexo
,函数运行正常。谢谢。毛罗
> str(a)
List of 1
  $ a: Factor w/ 4 levels "BF","HF","NM",..: 4 1 NA 4 2 2 2 2 2 1 ...