2016-07-04 13 views
0

Die ‚betadisper‘ Funtion in vegan mit [R] berechnet die multivariate Dispersion einer Gruppe von Seiten anhand ihrer EntfernungenFehler bei der R betadisper Funktion

I eine Distanzmatrix mit mehreren Gruppen von Seiten haben:

dis <- vegdist(correct_tree_data) 

Ich habe meine "Gruppen" mit der Funktion "Faktor" erstellt (23 Ebenen für 23 Gruppen von Websites), und jede Gruppe hat eine andere Nummer. Websites

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")) 

Wenn die ‚betadisper‘ Funktion, jedoch bekomme ich folgende Fehlermeldung:

mod <- betadisper(dis, groups)

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

Die Pegel der Menge der Gruppen in der Distanzmatrix als nicht auch tun übereinstimmen . von Replikaten in jeder Gruppe

Was sonst könnte zu diesem Fehler beitragen?

+0

Woher kommt 'correct_tree_data'? Kannst du bitte dieses Beispiel vollständig reproduzierbar machen? http://stackoverflow.com/help/mcve http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

Basierend auf einigen Experimenten habe ich nur mit diesen Funktionen ich getan Ich würde sagen, dass die "Gruppen" -Faktorlänge nicht wirklich mit den Abmessungen des "dis" -Objekts übereinstimmt, aber es ist unmöglich, ohne ein reproduzierbares Beispiel zu sagen, was in Ihrem Fall vor sich geht. –

+0

Das wäre einfacher, wenn Sie nur 'rep (1:23, jeder = c (144, 49, 121, ...))' –

Antwort

0

Solange die Dimensionen/Längen dieser Funktion passen sollte gut funktionieren:

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

Allerdings, wenn Ihr Faktor Länge länger als es sollten Sie diesen Fehler erhalten sein werden:

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

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

ich weiß, dass Sie nicht denken, das ist das Problem, das Sie haben, wenn Sie also eine reproducible example bieten, die wir investi schütze deinen speziellen Fall weiter.

+0

Hallo @Hack, danke für Ihre Eingabe. Ich meinte, dass der Rep die Anzahl der Zellen oder Replikate innerhalb einer Site bedeutet. Nach der Korrektur der Anzahl der Seiten innerhalb einer Gruppe funktionierte es. Danke noch einmal! –