2014-06-16 33 views
0

我對R有點新,所以原諒我的基本問題。我在一個完整的數據集上(358個位點,40個非生物參數,100個觀察物種)進行了一個CCA。cca每組和row.names

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 

我的第二個問題是連接到的是:358點分爲6組(4x60,2x59)。完整的矩陣將此信息推斷爲額外的列。 因爲我無法解決行名問題,所以無論如何,我更加困於名義數據。 原始矩陣包含第一列(樣本名稱,數字,但可以很容易地轉換爲標稱值)和第二列(組標識,名義值),然後是生物學觀察。

我想什麼有:

  1. 包含所有六組被着色每組的網站CCA。
  2. 一個只包含一組數據的CCA(沒有手冊 構建單個輸入表)
  3. 使用我的原始樣本名稱的CCA圖。

任何幫助表示讚賞!真的,我從昨天早上就卡住了:/

+0

你是什麼意思「如果我使用行名」?如果你把它們讀入你的桌子?或者如果你在你的模型中使用它們?這不清楚。我也不確定你在討論什麼額外的專欄,或者CCA在這種情況下「失敗」。請花時間創建一個[可重現的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。在使用默認軟件包之外的功能時,請清楚您正在加載哪些庫。如果我們能像你一樣獲得同樣的錯誤,我們更有可能提供幫助。 – MrFlick

+0

作爲**素食**開發者之一,我可以非常自信地說這是用戶錯誤,可能在某個地方,或許反覆,一路上。如果您在數據框中正確設置這些行,素食主義者將使用行名稱。如果將這些數據保留在數據對象中,我懷疑即使'cca()'也會工作,因爲我們所做的第一件事之一是通過'as.matrix()'將數據轉換爲矩陣,因此您會得到一個字符矩陣如果在你的數據框*中有任何非數字信息*。正如弗裏克先生所說,需要一個可重複的例子來進一步研究這一點。 –

+0

您好,感謝您的快速回答。我應該使用elobarate:首先我使用read.table(x,header = 1,sep/dec),其中x包含一個帶數字樣本名稱的列。這一列被解釋爲一個變量,並且cca變得混亂了。我嘗試read.table(x,header = 1,row.names = 1,sep/dec),並且我在'rowSums(X)中得到錯誤:'x'必須是數字'消息。虐待更新我最初的問題。 – nouse

回答

0

我使用cca()從純素我自己和我有一些自己的問題,但我至少能夠解決您的原始「行名稱「問題。我正在對來自41個土壤的數據進行CCA分析,共有334個物種和39個環境因素。 在我來說,我使用

rownames(MyDataSet) <- MyDataSet$ObservationNamesColumn

(我用的默認名稱,如MyDataSet例如這裏的緣故) 但是我仍然有哪些不是數字環境因素(如土壤質地)。您可以嘗試檢查非數值因素,以防您原始數據集中存在錯誤,或者因爲任何其他原因而將非生物因素解釋爲數字。要做到這一點,你可以使用命令str(MyDataSet),它告訴你每個變量的性質,或者lapply(MyDataSet, class),它也告訴你相同但是在不同的輸出中。

如果您的非生物因素不是數值(又如紋理),並且您想要刪除它們,您可以通過僅使用數值變量創建一個全新的數據集來實現這一點(您仍然可以保持觀察名字,因爲他們被定義爲列名),這是相當容易的事情,並且可以使用類似於這樣做:

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

這將創建具有相同的行作爲原始,但只列一個新的數據集(變量)與數值。您應該可以繼續使用這個新數據集繼續工作。

我對R編程和統計都很新(我是一名微生物學家),但我希望這有助於!