我在一个名为"data“的数据数据库上运行了以下指标物种分析(indval)代码,代码来自于R中的labdsv包,其中物种丰度为列,站点为行,如下所示:
Site Species X Species Y Species Z etc
1 10 3 5
2 5 15 220
3 0 1 0
4 21 100 3在一个单独的文件中是每个站点的相应组数据,它们要么是组1,要么是组2(称为spe.grp),即:
Groups
1
2
1
2我删除了分类变量,以便spe.only只有物种数据。
spe.only <- data[,2:1521]然后我移除了在任何样本中不发生的物种。
spe.only[, (!apply(spe.only==0,2,all))] 然后,我根据组(1)或(2)运行指示种。
(iva <- indval(spe.only, spe.grp$Groups))但我得到
“indval.default中的错误(spe.only,spe.grp$Status):所有物种必须至少在一个地块中发生”
如何解决此错误,以便正确运行indval?
发布于 2021-09-24 23:02:13
步骤
spe.only[, (!apply(spe.only==0,2,all))] 没有被分配回原始对象--也就是说,如果我们不将它分配回原来的对象,那么上述步骤的输出只会在控制台上打印,而不会更新原始对象。
spe.only <- spe.only[, (!apply(spe.only==0,2,all))] 现在做indval
> library(labdsv)
> indval(spe.only, spe.grp$Groups)
$relfrq
1 2
SpeciesX 0.5 1
SpeciesY 1.0 1
SpeciesZ 0.5 1
$relabu
1 2
SpeciesX 0.27777778 0.7222222
SpeciesY 0.03361345 0.9663866
SpeciesZ 0.02192982 0.9780702
$indval
1 2
SpeciesX 0.13888889 0.7222222
SpeciesY 0.03361345 0.9663866
SpeciesZ 0.01096491 0.9780702
$maxcls
SpeciesX SpeciesY SpeciesZ
2 2 2
$indcls
SpeciesX SpeciesY SpeciesZ
0.7222222 0.9663866 0.9780702
$pval
SpeciesX SpeciesY SpeciesZ
0.678 0.319 0.671 该错误在原始的“spe.only”对象上是可重复的
> indval(spe.only, spe.grp$Groups)
Error in indval.default(spe.only, spe.grp$Groups) :
All species must occur in at least one plot数据
spe.only <- structure(list(SpeciesX = c(10L, 5L, 0L, 21L), SpeciesY = c(3L,
15L, 1L, 100L), SpeciesZ = c(5L, 220L, 0L, 3L), SpeciesD = c(0,
0, 0, 0)), row.names = c(NA, -4L), class = "data.frame")
spe.grp <- structure(list(Groups = c(1, 2, 1, 2)),
class = "data.frame", row.names = c(NA,
-4L))https://stackoverflow.com/questions/69321814
复制相似问题