2015-02-17 25 views
0

我有一個問題打一個錯誤。這是我嘗試執行行:從素食主義者adonis功能不起作用

library(vegan) 
adonis(data = dset, adiv ~ N+P+K) 

它返回一條失敗消息:

Error in rowSums(x, na.rm = TRUE) : 
    'x' must be an array of at least two dimensions 

一切似乎是正常的與數據集,因爲AOV(數據= DSET,ADIV〜N + P + K)工作得很好。我知道當某些函數刪除數據框架尺寸時會出現這樣的錯誤,但在這種情況下我不知道如何解決它。

編輯。添加一段我的數據集。

treatment N P K M adiv 
N 1 0 0 0 0.2059 
P 0 1 0 0 0.20856 
K 0 0 1 0 0.22935 
O 0 0 0 0 0.10729 
NP 1 1 0 0 0.30674 
NK 1 0 1 0 0.30509 
PK 0 1 1 0 0.30606 
NPK+ 1 1 1 1 0.50389 
NPK 1 1 1 0 0.40731 
manure 0 0 0 1 0.2085 

之前,我嘗試執行阿多尼斯我治療轉換成數值與因素:

dataset$N <- as.factor(dat$N) 
dataset$P <- as.factor(dat$P) 
dataset$K <- as.factor(dat$K) 
dataset$M <- as.factor(dat$M) 

然後我試圖執行的功能和得到的錯誤。 正如我已經提到的,當我嘗試aov()或lm()時,一切正常。

+0

您可以製作一個重現錯誤的小例子嗎? – 2015-02-18 08:22:26

+0

@RomanLuštrik我已經添加了一些附加信息。 – 2015-02-18 15:53:22

回答

4

這是猜測,因爲你的問題沒有什麼可重複的。但是,如果我使用單變量響應,則可能觸發類似錯誤:adonis用於多變量響應,並且可能不適用於單變量響應。可以使用?adonis來閱讀adonis幫助頁面,它說公式的左側應該是「不同類型對象(繼承自類"dist")或數據框或矩陣」。在我嘗試之後,這有助於(但我實在無法重現您的示例):您可以嘗試使用lhs as.matrix(Nitrososphaearaceae)dist(Nitrososphaeraceae)

adonis函數實際上是用於多變量響應,並且需要謹慎使用單變量響應。您還應仔細考慮您使用此類模型的不同類型(或距離)。例如,上述兩個替代方案會給出不同的結果,因爲它們使用不同的相異性度量。我不完全確定使用基於距離的方法(如adonis)具有單變量響應是很有意義的。

+0

使用as.matrix()修復了這個問題。謝謝。 – 2015-02-18 15:59:52