参数意味着行数不同

时间:2018-02-01 21:47:00

标签: r

我试图用r包rNEXT分析一些生态数据。 我有一个3个矩阵的列表,被列为" incidence_raw"在包中。我的数据与格式的包示例数据完全匹配。矩阵包含0和1。

> str(blob)
List of 3
 $ : int [1:119, 1:109] 0 0 0 0 0 0 0 0 0 0 ...
 $ : int [1:119, 1:122] 0 0 0 0 0 0 0 0 0 0 ...
 $ : int [1:119, 1:106] 0 0 0 0 0 0 0 0 0 0 ...
> out = iNEXT (blob, q=c(0,1,2), datatype ="incidence_raw")
Error in data.frame(site = rownames(out), out) : 
  arguments imply differing number of rows: 0, 3

我完全不知道错误是什么,因为我的数据与示例数据非常相似。有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我找不到包“rNEXT”,所以我猜你实际上是指R包iNEXT

您的输入格式似乎不正确。看一下?iNEXT中的第三个例子:

require(iNEXT);
data(ant);
t <- round(seq(10, 500, length.out=20));
out3 <- iNEXT(ant$h500m, q=1, datatype="incidence_freq", size=t, se=FALSE);

您可以看到ant的格式与blob的格式不同:

str(ant);
#List of 5
# $ h50m  : num [1:228] 599 330 263 236 222 195 186 183 182 129 ...
# $ h500m : num [1:242] 230 133 131 123 78 73 65 60 60 56 ...
# $ h1070m: num [1:123] 150 99 96 80 74 68 60 54 46 45 ...
# $ h1500m: num [1:57] 200 144 113 79 76 74 73 53 50 43 ...
# $ h2000m: num [1:15] 200 80 59 34 23 19 15 13 8 8 ...

ant是数字向量列表,而不是矩阵列表(如您的情况)。

我不熟悉生态数据/建模,但您可能需要这样做:

blob <- lapply(blob, colSums);
out <- iNEXT(blob, q = c(0, 1, 2), datatype = "incidence_raw");

答案 1 :(得分:0)

这是一篇旧帖子,但我认为将 post 的解决方案留在 github 上也可能会有所帮助:

(1) 您应该将此处描述的函数 (ggiNEXT.iNEXT) 加载到您的 R 环境中:#25

(2) 您的数据框或矩阵列表必须命名(就像纤毛虫示例一样)。您可以尝试跳过下面的 names(data.list) 部分,您将收到与上述相同的错误消息。

下面是来自素食包的 BCI 数据集的示例 --

library(ggplot2)
library(vegan)
library(iNEXT)

data(BCI)
t.BCI <- as.data.frame(t(BCI))

BCI.1 <- t.BCI[1:225, 1:15]
BCI.1 <- as.matrix((BCI.1 > 0) + 0)

BCI.2 <- t.BCI[1:225, 16:27]
BCI.2 <- as.matrix((BCI.2 > 0) + 0)

BCI.3 <- t.BCI[1:225, 28:30]
BCI.3 <- as.matrix((BCI.3 > 0) + 0)

data.list <- list(BCI.1, BCI.2, BCI.3)

names(data.list) <- c("BCI.1", "BCI.2", "BCI.3")

out.raw <- iNEXT(data.list, datatype="incidence_raw", endpoint=100)
ggiNEXT.iNEXT(out.raw)