首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的错误(labdsv) --“所有物种都必须发生在至少一个地块上”

R中的错误(labdsv) --“所有物种都必须发生在至少一个地块上”
EN

Stack Overflow用户
提问于 2021-09-24 22:56:59
回答 1查看 269关注 0票数 1

我在一个名为"data“的数据数据库上运行了以下指标物种分析(indval)代码,代码来自于R中的labdsv包,其中物种丰度为列,站点为行,如下所示:

代码语言:javascript
复制
     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),即:

代码语言:javascript
复制
    Groups 
    1
    2
    1
    2

我删除了分类变量,以便spe.only只有物种数据。

代码语言:javascript
复制
   spe.only <- data[,2:1521]

然后我移除了在任何样本中不发生的物种。

代码语言:javascript
复制
   spe.only[, (!apply(spe.only==0,2,all))] 

然后,我根据组(1)或(2)运行指示种。

代码语言:javascript
复制
  (iva <- indval(spe.only, spe.grp$Groups))

但我得到

“indval.default中的错误(spe.only,spe.grp$Status):所有物种必须至少在一个地块中发生”

如何解决此错误,以便正确运行indval?

EN

回答 1

Stack Overflow用户

发布于 2021-09-24 23:02:13

步骤

代码语言:javascript
复制
spe.only[, (!apply(spe.only==0,2,all))] 

没有被分配回原始对象--也就是说,如果我们不将它分配回原来的对象,那么上述步骤的输出只会在控制台上打印,而不会更新原始对象。

代码语言:javascript
复制
spe.only <- spe.only[, (!apply(spe.only==0,2,all))] 

现在做indval

代码语言:javascript
复制
> 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”对象上是可重复的

代码语言:javascript
复制
> indval(spe.only, spe.grp$Groups)
Error in indval.default(spe.only, spe.grp$Groups) : 
  All species must occur in at least one plot

数据

代码语言:javascript
复制
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))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69321814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档