素食主义者的阿多尼斯功能不起作用

adonis function from vegan doesn't work

我遇到了一个错误。这是我尝试执行的行:

library(vegan)
adonis(data = dset, adiv ~ N+P+K)

它returns一条失败信息:

Error in rowSums(x, na.rm = TRUE) : 
  'x' must be an array of at least two dimensions

数据集似乎一切正常,因为 aov(data = dset, adiv ~ N+P+K) 工作正常。我知道当某些函数删除数据框尺寸时会出现此类错误,但我不知道在这种情况下如何修复它。

编辑。添加一块我的数据集。

treatment   N   P   K   M   adiv
N   1   0   0   0   0.2059
P   0   1   0   0   0.20856
K   0   0   1   0   0.22935
O   0   0   0   0   0.10729
NP  1   1   0   0   0.30674
NK  1   0   1   0   0.30509
PK  0   1   1   0   0.30606
NPK+    1   1   1   1   0.50389
NPK 1   1   1   0   0.40731
manure  0   0   0   1   0.2085

在我尝试执行 adonis 之前,我将处理值转换为因子:

dataset$N <- as.factor(dat$N)
dataset$P <- as.factor(dat$P)
dataset$K <- as.factor(dat$K)
dataset$M <- as.factor(dat$M)

然后我尝试执行函数并得到错误。 正如我已经提到的,当我尝试 aov() 或 lm() 时一切正常。

这是猜测,因为您的问题中没有任何可重现的内容。但是,如果我使用单变量响应,我可能会触发类似的错误:adonis 用于多变量响应,可能不适用于单变量响应。 adonis 帮助页面可以用 ?adonis 阅读,它说公式的左侧应该是 "either a dissimilarity object (inheriting from class "dist") or data frame or a matrix." 按照这个帮助我尝试(但我真的无法重现您的示例):您可以尝试使用 as.matrix(Nitrososphaearaceae)dist(Nitrososphaeraceae) 的 lhs。

adonis函数实际上是为多变量响应而设计的,使用单变量响应需要小心。您还应该仔细考虑您在此类模型中使用的差异类型(或距离)。例如,上面的两个备选方案将给出不同的结果,因为它们使用不同的相异性度量。我完全不确定将 adonis 等基于距离的方法与单变量响应一起使用是否有意义。