3

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など)を含める方法はありますか?

4

1 に答える 1

2

実際のデータの変数としてではなく、データ フレームの属性plotsとして変数を格納する必要があります。rownamesanimalData

あなたがしたい:

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()また、このようなデータ セットは使用しないでください。データは添付されておらず、独立したコピーであるため、必須ではなく、実際には危険です。

于 2012-11-15T17:32:01.210 に答える