我尝试从vegan
包进行CA分析。
这是我使用的代码:
install.packages("vegan")
library(vegan)
plots <- c("plotA", "plotB", "plotC", "plotD", "plotE")
animal1 <- c(2,7,4,8,1)
animal2 <- c(4,3,7,1,0)
animal3 <- c(8,5,0,1,3)
animal4 <- c(2,2,9,5,2)
animal5 <- c(1,6,9,8,7)
animalData <- data.frame (plots, animal1, animal2, animal3, animal4, animal5)
attach(animalData)
animalData.ca <- cca(animalData)
但是,我总是得到一个错误:
rowSums(X)出错:'x'必须是数字
我知道标签是一个因素,如果删除第一列,分析就会起作用。但随后分析创建了自己的标签,我无法使用我的标签。有没有办法让我自己的标签(plotA,plotB等)包括在内?
答案 0 :(得分:2)
您需要将plots
变量存储为rownames
数据框的animalData
属性,而不是实际数据中的变量。
你想:
library(vegan)
plots <- c("plotA", "plotB", "plotC", "plotD", "plotE")
animal1 <- c(2,7,4,8,1)
animal2 <- c(4,3,7,1,0)
animal3 <- c(8,5,0,1,3)
animal4 <- c(2,2,9,5,2)
animal5 <- c(1,6,9,8,7)
animalData <- data.frame(animal1, animal2, animal3, animal4, animal5)
rownames(animalData) <- plots
animalData
现在应该是这样的:
> animalData
animal1 animal2 animal3 animal4 animal5
plotA 2 4 8 2 1
plotB 7 3 5 2 6
plotC 4 7 0 9 9
plotD 8 1 1 5 8
plotE 1 0 3 2 7
然后是CA
animalData.ca <- cca(animalData)
有效:
> animalData.ca
Call: cca(X = animalData)
Inertia Rank
Total 0.3793
Unconstrained 0.3793 4
Inertia is mean squared contingency coefficient
Eigenvalues for unconstrained axes:
CA1 CA2 CA3 CA4
0.219528 0.099206 0.055572 0.005018
绘制此对象会导致
plot(animalData.ca, type = "text", scaling = 3)
如您所见,
使用了animalData
数据框中的属性数据。
另外,请不要attach()
这样的数据集;它不是必需的,实际上是危险的,因为数据没有附加,而是一个独立的副本。