素食主义者的阿多尼斯功能不起作用
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
等基于距离的方法与单变量响应一起使用是否有意义。
我遇到了一个错误。这是我尝试执行的行:
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
等基于距离的方法与单变量响应一起使用是否有意义。