首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“x”在R中设置后,在Decorana/VEGAN函数中必须是数值错误。

“x”在R中设置后,在Decorana/VEGAN函数中必须是数值错误。
EN

Stack Overflow用户
提问于 2019-02-21 08:50:58
回答 1查看 228关注 0票数 0

我一直在获取错误: rowSums(veg)中的错误:

代码语言:javascript
复制
 'x' must be numeric

我从一个大数据集中细分了一小部分,当我运行DCA排序时,我一直得到上面提到的错误消息。我检查过了,但是在de行中没有字符数据。

代码语言:javascript
复制
install.packages("vegan")
library(vegan)

Dataveg2018A <- subset(DatasetMerg, Year == "2018" & Block == "A",
                                     select = 4:7)
ord1<-decorana(Dataveg2018A)

有人能告诉我我做错了什么吗?

子集示例数据(DatasetMerg)

代码语言:javascript
复制
        structure(list(Year = structure(c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Names = c("18A01", 
    "18A02", "18A03", "18A04", "18A05", "18A06", "18A07", "18A08", 
    "18A09", "18A10", "18A11", "18A12", "18A13", "18A14", "18A15", 
    "18A16", "18A17", "18A18", "18A19", "18A20"), .Label = c("2001", 
    "2008", "2018"), class = "factor"), Block = structure(c(1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L), .Names = c("18A01", "18A02", "18A03", "18A04", "18A05", 
    "18A06", "18A07", "18A08", "18A09", "18A10", "18A11", "18A12", 
    "18A13", "18A14", "18A15", "18A16", "18A17", "18A18", "18A19", 
    "18A20"), .Label = c("A", "B", "C", "D", "E", "F", "G", "H", 
    "I", "J", "X"), class = "factor"), Plot = structure(1:20, .Names = c("18A01", 
    "18A02", "18A03", "18A04", "18A05", "18A06", "18A07", "18A08", 
    "18A09", "18A10", "18A11", "18A12", "18A13", "18A14", "18A15", 
    "18A16", "18A17", "18A18", "18A19", "18A20"), .Label = c(" 1", 
    " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9", "10", "11", "12", 
    "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", 
    "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", 
    "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", 
    "46"), class = "factor"), Agrimonia.eupatoria = structure(c(3L, 
    2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L), .Names = c("18A01", "18A02", "18A03", "18A04", "18A05", 
    "18A06", "18A07", "18A08", "18A09", "18A10", "18A11", "18A12", 
    "18A13", "18A14", "18A15", "18A16", "18A17", "18A18", "18A19", 
    "18A20"), .Label = c("0", "1", "2", "6"), class = "factor"), 
        Agrostis.capillaris = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
        1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Names = c("18A01", 
        "18A02", "18A03", "18A04", "18A05", "18A06", "18A07", "18A08", 
        "18A09", "18A10", "18A11", "18A12", "18A13", "18A14", "18A15", 
        "18A16", "18A17", "18A18", "18A19", "18A20"), .Label = c("0", 
        "2", "3", "4", "6"), class = "factor"), Agrostis.gigantea = structure(c(1L, 
        1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 3L, 2L, 1L, 3L, 3L, 
        4L, 3L, 1L, 1L), .Names = c("18A01", "18A02", "18A03", "18A04", 
        "18A05", "18A06", "18A07", "18A08", "18A09", "18A10", "18A11", 
        "18A12", "18A13", "18A14", "18A15", "18A16", "18A17", "18A18", 
        "18A19", "18A20"), .Label = c("0", "2", "3", "4", "6"), class = "factor"), 
        Agrostis.stolonifera = structure(c(5L, 1L, 1L, 1L, 1L, 1L, 
        1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Names = c("18A01", 
        "18A02", "18A03", "18A04", "18A05", "18A06", "18A07", "18A08", 
        "18A09", "18A10", "18A11", "18A12", "18A13", "18A14", "18A15", 
        "18A16", "18A17", "18A18", "18A19", "18A20"), .Label = c("0", 
        "1", "18", "2", "3", "38", "4", "6", "68", "8"), class = "factor")), 
  .Names = c("Year", 
    "Block", "Plot", "Agrimonia.eupatoria", "Agrostis.capillaris", 
    "Agrostis.gigantea", "Agrostis.stolonifera"), row.names = c("18A01", 
    "18A02", "18A03", "18A04", "18A05", "18A06", "18A07", "18A08", 
    "18A09", "18A10", "18A11", "18A12", "18A13", "18A14", "18A15", 
    "18A16", "18A17", "18A18", "18A19", "18A20"), class = "data.frame")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 20:50:56

您的变量都是非数值的(因子),在原始DatasetMerg及其子集(Dataveg2018A)中都是如此。您可以看到这个发出命令str(DatasetMerg),它将所有变量作为因子(以及它的子集相同)。您也可以在您自己显示的完整DatasetMerg中看到这一点,所有物种数据都是作为因子提供的。这只是你们物种中的第一个,你们给出的数据如下:

代码语言:javascript
复制
    Agrostis.capillaris = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Names = c("18A01", 
    "18A02", "18A03", "18A04", "18A05", "18A06", "18A07", "18A08", 
    "18A09", "18A10", "18A11", "18A12", "18A13", "18A14", "18A15", 
    "18A16", "18A17", "18A18", "18A19", "18A20"), .Label = c("0", 
    "2", "3", "4", "6"), class = "factor")

请注意最后一个定义class = "factor"。值(全部为1L)给出了要素级别的索引,而这些级别是在.Label中给出的。所以你所有的数据都是1 (1L),这些数据被显示为.Labels[1L] == c("0", "2", "3", "4", "6")[1L] == "0",它是非数字的(一个字符)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54802812

复制
相关文章

相似问题

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