'X' должно быть числовой ошибкой в ​​функции Decorana / VEGAN после поднабора в R - PullRequest
0 голосов
/ 21 февраля 2019

Я получаю эту ошибку: Ошибка в rowSums (veg):

 'x' must be numeric

Я выделил из большого набора данных небольшую часть, и когда я выполняю назначение DCA, я получаю вышеупомянутое сообщение об ошибке.Я проверил, но у меня нет символьных данных в строках de.

install.packages("vegan")
library(vegan)

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

Может кто-нибудь сказать мне, что я делаю неправильно?

пример данных подмножества (DatasetMerg)

        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")

1 Ответ

0 голосов
/ 21 февраля 2019

Все ваши переменные не числовые (факторы), как в исходном DatasetMerg, так и в его подмножестве (Dataveg2018A).Вы можете видеть эту команду выдачи str(DatasetMerg), которая дает все переменные как факторы (и то же самое для своего подмножества).Вы также можете увидеть это на своем собственном дисплее полного DatasetMerg, где все данные о видах приведены как факторы.Вот только первый из ваших видов, для которого вы предоставляете данные в виде:

    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.Таким образом, все ваши данные являются единицами (1L), и они отображаются как .Labels[1L] == c("0", "2", "3", "4", "6")[1L] == "0", который не является числовым (символ).

...