【问题标题】:I'm getting the following error code when I run rankabundance from BiodiversityR package当我从 BiodiversityR 包运行 rankabundance 时,我收到以下错误代码
【发布时间】:2021-08-21 15:43:42
【问题描述】:

我正在尝试通过使用 BiodiversityR 包中的 rankabundance(df) 来计算社区数据(站点*物种矩阵)的排名丰度。但是每当我尝试运行它时,都会弹出以下错误。 Error in `[.data.frame`(pi, i) : undefined columns selected

有人可以帮忙解释一下这段代码的含义吗? 我已经在子设置数据时指定了列名。并且数据的格式也正确;我已经尝试为相同的功能运行 BCI(来自 vegan),它运行得非常好。我的数据与 BCI 格式相同。

library(BiodiversityR)
rankabundance(alad2, digits = 1)

这是我正在运行的代码,数据框排列在一个站点*物种矩阵中,其中站点是行,物种是列。

这是数据框,alad2:

structure(list(`Alysicarpous sp.1` = c(0L, 0L, 1L, 0L, 0L, 4L, 
0L, 0L, 0L, 0L, 0L, 4L), `Alysicarpous sp.2` = c(0L, 0L, 1L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `Bothriochloa pertusa` = c(0L, 
0L, 4L, 0L, 12L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `Butea monosperma ` = c(0L, 
0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `Chromolaena odorata` = c(0L, 
0L, 0L, 1L, 3L, 0L, 0L, 5L, 17L, 4L, 0L, 0L), `Chrysopogon sp.*` = c(62L, 
64L, 57L, 68L, 72L, 74L, 72L, 62L, 56L, 67L, 54L, 61L), `Desmodium triflorum` = c(0L, 
2L, 7L, 12L, 6L, 12L, 0L, 10L, 13L, 0L, 14L, 8L), `Eragrostis tenuifolia` = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L), `Fimbristylis dichotoma` = c(32L, 
38L, 41L, 26L, 38L, 38L, 41L, 20L, 28L, 41L, 31L, 32L), H80 = c(2L, 0L, 0L, 0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L, 0L), `Hemigraphis sp.*` = c(0L, 
0L, 0L, 0L, 0L, 0L, 3L, 0L, 0L, 3L, 0L, 0L), `Ischaemum sp.*` = c(18L, 
0L, 18L, 18L, 0L, 18L, 33L, 26L, 12L, 16L, 24L, 23L), `Lantana camara` = c(0L, 
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L), `Leucas aspera` = c(0L, 
0L, 0L, 0L, 2L, 2L, 0L, 0L, 1L, 0L, 0L, 0L), `Oldenlandia umbellata` = c(3L, 
6L, 9L, 8L, 3L, 0L, 0L, 3L, 6L, 7L, 3L, 0L), `Phyllanthus virgatus` = c(0L, 2L, 9L, 13L, 6L, 7L, 9L, 0L, 0L, 6L, 11L, 8L), `Rungia pectinata` = c(0L, 
0L, 0L, 2L, 3L, 3L, 0L, 0L, 0L, 0L, 0L, 0L), `Senagalia pennata` = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L), `Senna spectabilis ` = c(0L, 
0L, 0L, 0L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `Setaria flavida` = c(0L, 
0L, 0L, 0L, 11L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), `Setaria pumila` = c(4L, 
0L, 13L, 0L, 0L, 0L, 5L, 4L, 7L, 5L, 4L, 7L), `Themeda triandra` = c(0L, 
0L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 0L, 0L, 0L)), row.names = c(NA, 
-12L), class = c("tbl_df", "tbl", "data.frame"))

【问题讨论】:

  • 请分享您正在运行的代码并制作可重现的示例。
  • library(BiodiversityR) rankabundance(df, digits = 1)。这是我正在运行的代码。我对此很陌生,所以如果可能的话,请尽量减少它。提前致谢。
  • 如果你把alad2的内容也贴出来会更方便。尝试使用dput(alad2)

标签: r vegan


【解决方案1】:

您没有数据框,而是 tibble。使用alad2 <- as.data.frame(alad2),你的代码就可以工作了。

【讨论】:

  • 非常感谢!有效。如果您不介意解释,两者之间有什么区别?
  • 在这种情况下,主要区别在于,如果你只取一个变量,你会得到一个带有 data.frame 的变量的向量(只有“维度”长度或元素数),但是一个- 带有tibble的列矩阵(二维:行数和列数= 1)。
猜你喜欢
  • 2021-07-26
  • 2017-02-23
  • 2020-06-23
  • 2017-10-04
  • 2019-01-26
  • 2023-01-23
  • 2011-07-20
  • 1970-01-01
  • 2021-08-19
相关资源
最近更新 更多