2016-07-04 172 views
0

素食的「betadisper」 funtion時[R]計算基於它們的距離錯誤,使用R betadisper功能

我有位點的多組的距離矩陣的一組站點中的所述多元分散體:

dis <- vegdist(correct_tree_data) 

我創造了我的「羣體」使用「因素」功能(23個水平23個團體的網站),每個組都有不同的沒有。網站

groups <- factor(c(rep(1,144), rep(2,49), rep(3,121), rep(4,81), rep(5,81), rep(6,81), rep(7,36), rep(8,289), rep(9,324), rep(10,225), rep(11,256), rep(12,225), rep(13,289), rep(14,289), rep(15,144), rep(16,225), rep(17,225), rep(18,225), rep(19,225), rep(20,225), rep(21,225), rep(22,225), rep(23,225)), labels = c("s1_05","s2_05","s3_05","s4_05","s5_05","s6_05","s7_05","s1_10","s2_10","s3_10","s4_10","s5_10","s6_10","s7_10","s8_10","s1_15","s2_15","s3_15","s4_15","s5_15","s6_15","s7_15","s8_15")) 

當使用「betadisper」功能的,不過,我得到了以下錯誤消息:

mod <- betadisper(dis, groups)

Error in pts[groups == i, , drop = FALSE] : (subscript) logical subscript too long

水平做匹配組在距離矩陣的數量以及無。的複製每組

還有什麼可能是導致這個錯誤嗎?

+0

'correct_tree_data'從哪裏來?你能否讓這個例子完全重現? http://stackoverflow.com/help/mcve http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

基於一些實驗我剛剛做了這些功能我'd說,答案是'組'因子長度並不與'dis'對象的維度相匹配,但是如果沒有可重現的例子,就不可能真正知道你的情況是怎麼回事。 –

+0

如果你使用'rep(1:23,each = c(144,49,121,...))' –

回答

0

只要尺寸/長度匹配這個功能應該很好地工作:

require(vegan) 
data(varespec) 

dis <- vegdist(varespec) 
group <- factor(rep("grazed", NROW(varespec))) 
mod <- betadisper(dis, group) 
mod 

Homogeneity of multivariate dispersions

Call: betadisper(d = dis, group = group)

No. of Positive Eigenvalues: 15 No. of Negative Eigenvalues: 8

Average distance to median: grazed 0.4255

Eigenvalues for PCoA axes: PCoA1 PCoA2 PCoA3 PCoA4 PCoA5 PCoA6 PCoA7 PCoA8 1.7552 1.1334 0.4429 0.3698 0.2454 0.1961 0.1751 0.1284

但是,如果你的因素長度大於它應該是你會得到這個錯誤:

group <- c(group, "extra data") 
betadisper(dis, group) 

Error in pts[groups == i, , drop = FALSE] : (subscript) logical subscript too long

我知道你不認爲這是你遇到的問題,所以如果你提供一個reproducible example我們可以investi進一步調查你的具體案例。

+0

Hi @Hack,這會更簡單,謝謝你的輸入。我雖然代表意味着一個網站內的細胞或複製的數量。糾正一個組內的網站數量後,它的工作。再次感謝! –