2015-05-29 92 views
1

我有一個網站矩陣。我想開發一個UPGMA集羣。我想使用R和素食圖書館。我的矩陣有不是所有變量都被測量的位置。R中帶有NoData值的UPGMA集羣

隨着數據的相似矩陣:

Variable 1;Variable 2;Variable 3;Variable 4;Variable 5 
0.5849774671338231;0.7962161133598957;0.3478909861199184;0.8027122599553912;0.5596553797833573 
0.5904142034898171;0.18185393432022612;0.5503250366728479;NA;0.05657408486342197 
0.2265148074206368;0.6345513807275411;0.8048128547418062;0.3303602674038131;0.8924461773052935 
0.020429460126217602;0.18850489885886157;0.26412619465769416;0.8020472793070729;NA 
0.006945970735023677;0.8404983401121199;0.058385134042814646;0.5750066564897788;0.737599672122899 
0.9909722313946067;0.22356808747617019;0.7290078902086897;0.5621006367587756;0.3387823531518016 
0.5932907022602052;0.899773235815933;0.5441346748937264;0.8045695319247985;0.6183003409599681 
0.6520679140573288;0.5419713133237936;NA;0.7890033752744002;0.8561828607592286 
0.31285906479192593;0.3396351688936058;0.5733594373520889;0.03867689654415574;0.1975784885854912 
0.5045966366726562;0.6553489439611587;0.029929403932252963;0.42777351534900676;0.8787135401098227 

我刨用下面的代碼來做到這一點:

library(vegan) 
# env <- read.csv("matrix_of_sites.csv") 
env.norm <- decostand(env, method = "normalize") # Normalizing data here 
env.ch <- vegdist(env.nom, method = "euclidean") 
env.ch.UPGMA <- hclust(env.ch, method="average") 
plot(env.ch.UPGMA) 

我跑第二線後,我得到這個錯誤:

Error in x^2 : non-numeric argument to binary operator 

我不熟悉R,所以我不確定這是否是由於沒有數據的單元。我該如何解決這個問題?

+0

@gung:謝謝你的建議。我包括數據以支持一個可重複的例子。 – Jaqo

+0

我爲你格式化了數據。如果你願意,你可以檢查它是如何完成的,以備將來參考。我注意到有2個地方只有4個值,並且有分號';;'。我認爲那些是缺少價值的;我把'NA's放在那裏。編輯,如果適當的話。 – gung

+0

謝謝。現在很清楚。 – Jaqo

回答

1

R並不認爲數據是矩陣中的數字,但至少其中一些數據被解釋爲字符變量並更改爲因子。在將int讀入R後檢查數據。如果所有數據都是數字,則sum(env)會給出數字結果。使用str()summary()功能進行詳細檢查。

從R的角度來看,您的數據文件具有混合格式。 R功能read.csv假定項目由逗號分隔(,),小數點分隔符是句點(.),並且read.csv2假定項目由冒號分隔(;),小數點分隔符是逗號,。你混合這兩個約定。您可以讀取格式如此的數據,但您可能必須同時提供sepdec參數。

如果您在R中正確獲取您的數據,則decostand將停止並出現錯誤:如果您未添加na.rm = TRUE,它不會接受缺失值。與下一個vegdist命令相同:它還需要na.rm = TRUE來分析您的數據。

+0

感謝您的幫助,併爲純素食!在調用decostand時,設置header = TRUE,dec ='。',sep =',',stringsAsFactors = FALSE,na.strings ='NA''。 – Jaqo

+0

我有第二個問題:我在Q模式下應用聚類和PCA分析:我正在比較網站(或L&L會說的對象),而不是變量。我的變量是不同的(例如,降水,坡度,不透水性)。在獲得站點之間的和絃距離之前,我是否應該在變量內應用規範化? – Jaqo