2012-11-15 4 views
3

Я пытаюсь сделать анализ CA из пакета «vegan».Анализ CCA: ошибка в rowSums (X): «x» должно быть числовым

Это код, я использую:

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): 'х' должно быть числовым". Я знаю, что метки являются фактором, и анализ работает, если я удалю первый столбец. Но тогда анализ создает собственные ярлыки, и я не могу использовать мой. Есть ли способ получить мои собственные ярлыки (plotA, plotB и т. Д.)?

Большое спасибо заранее.

.fidelfisch

+0

проверить 'row.names' в параметрах' data.frame'? by '? data.frame' – liuminzhao

ответ

2

Вы должны иметь plots переменную хранящуюся в качестве атрибута кадра animalData данных rownames, а не в качестве переменной в фактических данных.

Вы хотите:

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) 

enter image description here

, который, как вы можете видеть, использовали данные атрибутов из кадра animalData данных.

Кроме того, не следует делать attach() таких наборов данных; это не требуется и фактически опасно, поскольку данные не прилагаются, а независимая копия.

+0

Очень приятно. Большое спасибо! Вы спасли мой день/неделю :-) – fidelfisch

Смежные вопросы