我试图用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
我完全不知道错误是什么,因为我的数据与示例数据非常相似。有什么建议吗?
答案 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)