我正在将iNEXT应用于以下数据,但是出现错误。据我观察,我的数据的组织方式与作者举例所用的蜘蛛数据相同。
dput(corn.list)
list(A = structure(c("C2_blk1_2014", " 0", "300", "1350", " 150",
" 0", " 0", "300", "1350", " 150", " 0", " 0", "300", "1350",
"C2_blk1_2015", " 0", " 0", "1264", " 702", " 0", " 0",
" 0", "1264", " 702", " 0", " 0", " 0", "1264", "C2_blk1_2016",
" 0", " 0", "1674", " 913", " 0", " 0", " 0", "1674",
" 913", " 0", " 0", " 0", "1674", "C2_blk1_2017", "1112",
" 0", "5423", " 973", " 0", "1112", " 0", "5423", " 973",
" 0", "1112", " 0", "5423", "C2_blk2_2014", " 142", " 0",
" 994", " 568", " 0", " 142", " 0", " 994", " 568", " 0",
" 142", " 0", " 994", "C2_blk2_2015", " 0", " 0", " 305",
" 611", " 0", " 0", " 0", " 305", " 611", " 0", " 0",
" 0", " 305", "C2_blk2_2016", " 0", " 0", "2266", "1133",
" 0", " 0", " 0", "2266", "1133", " 0", " 0", " 0", "2266",
"C2_blk2_2017", " 131", " 0", "1705", "1049", " 0", " 131",
" 0", "1705", "1049", " 0", " 131", " 0", "1705", "C2_blk3_2014",
" 0", " 0", " 834", " 0", " 0", " 0", " 0", " 834",
" 0", " 0", " 0", " 0", " 834", "C2_blk3_2015", " 0",
" 0", " 834", " 556", " 0", " 0", " 0", " 834", " 556",
" 0", " 0", " 0", " 834", "C2_blk3_2016", " 272", " 0",
"2446", "1223", " 0", " 272", " 0", "2446", "1223", " 0",
" 272", " 0", "2446", "C2_blk3_2017", " 0", " 0", "3466",
"1600", " 0", " 0", " 0", "3466", "1600", " 0", " 0",
" 0", "3466", "C2_blk4_2014", " 136", " 0", " 0", " 272",
"136", " 136", " 0", " 0", " 272", "136", " 136", " 0", " 0",
"C2_blk4_2015", " 0", " 0", " 725", " 290", " 0", " 0",
" 0", " 725", " 290", " 0", " 0", " 0", " 725", "C2_blk4_2016",
" 136", "136", "2996", "3405", " 0", " 136", "136", "2996",
"3405", " 0", " 136", "136", "2996", "C2_blk4_2017", " 0",
" 0", " 958", " 274", " 0", " 0", " 0", " 958", " 274",
" 0", " 0", " 0", " 958"), .Dim = c(14L, 16L), .Dimnames = list(
c("id", "SETSP", "SOLPT", "SONAR", "AMATA", "MORAL", "POLCO",
"CHEAL", "DIGSA", "DATST", "ABUTH", "POLPY", "POLPE", "SONAS"
), NULL)), B = structure(c("C4_blk1_2014", " 0", " 0",
" 966", " 966", " 0", " 0", " 0", " 0", " 0", " 966",
" 966", " 0", " 0", "C4_blk1_2015", " 935", " 0", " 1247",
" 779", " 0", "312", " 0", " 935", " 0", " 1247", " 779",
" 0", "312", "C4_blk1_2016", " 134", " 0", " 668", " 936",
" 0", " 0", " 0", " 134", " 0", " 668", " 936", " 0", " 0",
"C4_blk1_2017", " 0", "136", " 819", "1092", " 0", " 0",
" 0", " 0", "136", " 819", "1092", " 0", " 0", "C4_blk2_2014",
" 138", " 0", " 276", " 414", " 0", " 0", " 0", " 138",
" 0", " 276", " 414", " 0", " 0", "C4_blk2_2015", " 0",
" 0", " 755", "1962", "302", " 0", " 0", " 0", " 0", " 755",
"1962", "302", " 0", "C4_blk2_2016", " 144", "432", " 1728",
" 288", " 0", " 0", " 0", " 144", "432", " 1728", " 288",
" 0", " 0", "C4_blk2_2017", " 0", "138", "10091", "2626",
" 0", " 0", " 0", " 0", "138", "10091", "2626", " 0", " 0",
"C4_blk3_2014", " 0", "272", " 2040", " 136", " 0", " 0",
" 0", " 0", "272", " 2040", " 136", " 0", " 0", "C4_blk3_2015",
"1444", " 0", " 289", " 0", " 0", " 0", " 0", "1444",
" 0", " 289", " 0", " 0", " 0", "C4_blk3_2016", " 407",
" 0", " 0", " 136", " 0", " 0", " 0", " 407", " 0", " 0",
" 136", " 0", " 0", "C4_blk3_2017", " 135", " 0", " 812",
" 812", " 0", " 0", " 0", " 135", " 0", " 812", " 812",
" 0", " 0", "C4_blk4_2014", " 0", " 0", " 548", " 548",
" 0", " 0", " 0", " 0", " 0", " 548", " 548", " 0", " 0",
"C4_blk4_2015", " 723", " 0", " 434", "1592", " 0", " 0",
" 0", " 723", " 0", " 434", "1592", " 0", " 0", "C4_blk4_2016",
" 0", " 0", " 1599", " 666", " 0", " 0", " 0", " 0",
" 0", " 1599", " 666", " 0", " 0", "C4_blk4_2017", " 135",
"135", " 3781", "1621", " 0", " 0", "135", " 135", "135", " 3781",
"1621", " 0", " 0"), .Dim = c(14L, 16L), .Dimnames = list(c("id",
"SETSP", "SOLPT", "SONAR", "AMATA", "MORAL", "POLCO", "CHEAL",
"DIGSA", "DATST", "ABUTH", "POLPY", "POLPE", "SONAS"), NULL)))
代码
iNEXT(corn.list,q=0,datatype = "abundance")
错误
Error in if (sum(x) == 0) stop("Zero abundance counts in one or more sample sites") : missing value where TRUE/FALSE needed
蜘蛛数据在这里 http://johnsonhsieh.github.io/iNEXT/inst/doc/Introduction.html
感谢您的帮助。
答案 0 :(得分:0)
在我看来,您的列表很可能被R解释为由字符而不是数字向量组成。 iNEXT要求您的数据为“数字”类型,这意味着R会将其中的值理解为数字而不是字符串。使用 > str(spider)
List of 2
$ Girdled: num [1:26] 46 22 17 15 15 9 8 6 6 4 ...
$ Logged : num [1:37] 88 22 16 15 13 10 8 8 7 7 ...
函数,了解R如何将蜘蛛数据理解为两个命名向量,每个向量仅具有数值:
> str(corn.list)
List of 2
$ A: chr [1:14, 1:16] "C2_blk1_2014" " 0" "300" "1350" ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:14] "id" "SETSP" "SOLPT" "SONAR" ...
.. ..$ : NULL
$ B: chr [1:14, 1:16] "C4_blk1_2014" " 0" " 0" " 966" ...
..- attr(*, "dimnames")=List of 2
.. ..$ : chr [1:14] "id" "SETSP" "SOLPT" "SONAR" ...
.. ..$ : NULL
您的数据应理解为字符串列表,
read.csv()
为了节省时间,从原始数据文件开始并上载它可能会更容易,以便R更好地理解结构(我通常使用#first create a function that will convert your data to numeric
replace_space<-function(strng){as.numeric(gsub(" ", "", strng))}
#then apply the function to every column in each element of your list
cl2<-lapply(corn.list, function(x){sapply(x, replace_space)})
#Things that were legitimate character strings get converted to NA. if you didn't care about them at all, you could remove them:
cl3<-lapply(cl2, function(x){apply(x,2, function(y){y[complete.cases(y)]})})
)。
有可能在R中对其进行重新格式化。我从这条路开始,但很快意识到我的粗略代码将删除您的菌株名称,并弄乱了每个“社区”的对齐方式, iNEXT。无论如何,我在下面粘贴了我的代码,以防它对您有一定的帮助。
System.Windows.Forms