我遇到了解决一个错误的问题。这是我尝试执行的行:
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()时,一切正常。
答案 0 :(得分:4)
这是猜测,因为你的问题中没有任何可重复的内容。但是,如果我使用单变量响应,我可以触发类似的错误:adonis
用于多变量响应,并且可能不适用于单变量响应。可以使用adonis
来阅读?adonis
帮助页面,并且它表示公式的左侧应该是&#34;要么是相异度对象(继承自类"dist"
} )或数据框或矩阵。&#34;这有助于我尝试(但我真的无法重现您的示例):您可以尝试使用as.matrix(Nitrososphaearaceae)
或dist(Nitrososphaeraceae)
的lhs。
adonis
功能真正用于多变量响应,并且需要谨慎使用单变量响应。您还应该仔细考虑与此类模型一起使用的不相似度(或距离)的类型。例如,上面的两个替代方案将给出不同的结果,因为它们使用不同的相异性度量。我完全不确定使用基于距离的方法,如adonis
和单变量响应。