来自素食主义者的adonis功能不起作用

时间:2015-02-17 20:19:15

标签: r vegan

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

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

它返回一条失败消息:

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()时,一切正常。

1 个答案:

答案 0 :(得分:4)

这是猜测,因为你的问题中没有任何可重复的内容。但是,如果我使用单变量响应,我可以触发类似的错误:adonis用于多变量响应,并且可能不适用于单变量响应。可以使用adonis来阅读?adonis帮助页面,并且它表示公式的左侧应该是&#34;要么是相异度对象(继承自类"dist"} )或数据框或矩阵。&#34;这有助于我尝试(但我真的无法重现您的示例):您可以尝试使用as.matrix(Nitrososphaearaceae)dist(Nitrososphaeraceae)的lhs。

adonis功能真正用于多变量响应,并且需要谨慎使用单变量响应。您还应该仔细考虑与此类模型一起使用的不相似度(或距离)的类型。例如,上面的两个替代方案将给出不同的结果,因为它们使用不同的相异性度量。我完全不确定使用基于距离的方法,如adonis和单变量响应。