2016-07-04 4 views
0

«betadisper» FUNTION в веганском [R], вычисляет многомерную дисперсию группы сайтов на основе их расстоянияОшибка при использовании R функции betadisper

у меня есть матрица расстояний с несколькими группами сайтов:

dis <- vegdist(correct_tree_data) 

Я создал свои «группы», используя функцию «factor» (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

Основываясь на некоторых экспериментах, я только что сделал с этими функциями I «Ответьте, что ответ заключается в том, что длина фактора« групп »на самом деле не соответствует размерам объекта' 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

Я знаю, что вы не думаете, что это проблема, с которой вы сталкиваетесь, поэтому, если вы предоставляете , мы можем инвестировать закройте свой конкретный случай.

+0

Привет @Hack, спасибо за ваш вклад. Я, однако, что rep означает количество ячеек или репликатов внутри сайта. После исправления количества сайтов в группе это сработало. Еще раз спасибо! –

Смежные вопросы