0

私はRに少し慣れていないので、基本的な質問を許してください。

完全なデータセット (358 のサイト、40 の非生物パラメーター、100 の種の観察) で CCA を実行します。

library(vegan)
env <- read.table("env.txt", header = TRUE, sep = "\t", dec = ",")
otu <- read.table(otu.txt", header = TRUE, sep = "\t", dec = ",")
cca <- cca(otu~., data=env)
cca.plot <- plot(cca, choices=c(1,2))
vif.cca(cca)
ccared <- cca(formula = otu ~EnvPar1,2,n, data = env)
ccared.plot <- plot(ccared, choices=c(1,2))
orditorp(ccared.plot, display="sites")

これは、最初の列でサンプル名を使用しなくても機能します (最初は、数値のサンプル名を含む最初の列が変数として解釈されたため、その情報なしでテーブルを使用しました。orditorp を介してサイト名をプロットに追加すると、「row.プロットでは name=n" です。) ただし、サンプル名を使用したいです。サンプル名情報を使用して、両方のテーブルで row.names=1 を試しました。

envnames <- read.table("envwithnames.txt", header = TRUE, row.names=1, sep = "\t", dec = ",")
otunames <- read.table("otuwithnames.txt", header = TRUE, row.names=1, sep = "\t", dec = ",")

、およびenv/otu/envnames/otunames の任意の組み合わせ。cca はいずれの場合もうまく機能しましたが、どのプロット コマンドでも結果が得られました

plot.ccarownames <- plot(cca(ccarownames, choices=c(1,2)))
Error in rowSums(X) : 'x' must be numeric

私の 2 番目の問題はそれに関連しています。358 のサイトが 6 つのグループ (4x60、2x59) にグループ化されています。完全なマトリックスには、この情報が追加の列として推測されます。行名の問題を解決できなかったので、とにかく公称データにさらにこだわっています。元の行列には、最初の列 (サンプル名、数値ですが、名義に簡単に変換できます) と 2 番目の列 (グループ ID、名義) が含まれ、その後に生物学的観察が続きます。

私がしたいこと:

  1. グループごとにサイトを着色している​​ 6 つのグループすべてを含む CCA。
  2. 1 つのグループのデータのみを含む CCA (個々の入力テーブルを手動で作成しない)
  3. 私の元のサンプル名を使用している CCA プロット。

どんな助けでも大歓迎です!本当に、私は昨日の朝からそれで立ち往生しています:/

4

1 に答える 1

0

私はビーガンから cca() を使用していますが、あなた自身の問題がいくつかありますが、少なくとも元の「行名」の問題は解決できました。私は、334 の種と 39 の環境因子を含む 41 の土壌からのデータに対して CCA 分析を行っています。私の場合、私が使用した

rownames(MyDataSet) <- MyDataSet$ObservationNamesColumn

(ここでは例として MyDataSet などのデフォルト名を使用しました)しかし、数値ではない環境要因(土壌テクスチャなど)がまだありました。元のデータセットに誤りがある場合、または他の理由で数値として解釈されない非生物的要因がある場合に備えて、数値以外の要因をチェックしてみてください。これを行うにはstr(MyDataSet)、各変数の性質を伝えるコマンドを使用するかlapply(MyDataSet, class)、同じことを別の出力で伝えるコマンドを使用できます。

数値ではない非生物的要因 (テクスチャなど) があり、それらを削除したい場合は、数値変数のみを使用してまったく新しいデータセットを作成することで削除できます (観測名はそのまま保持します)。行名として定義されている場合)、これはかなり簡単に実行でき、次のようなものを使用して実行できます。

MyDataSet.num <- MyDataSet[,sapply(MyDataSet, is.numeric)]

これにより、元のデータセットと同じ行を持ち、数値を持つ列 (変数) のみを持つ新しいデータセットが作成されます。その後、この新しいデータ セットを使用して作業を続行できるはずです。

私はRプログラミングと統計の両方に非常に慣れていません(私は微生物学者です)が、これが役立つことを願っています!

于 2014-07-01T15:21:14.907 に答える