使用R betadisper函数时出错

时间:2016-07-04 13:30:01

标签: r vegan

' betadisper'素食主义者中的函数[R]根据距离

计算一组站点的多变量离散度

我有一组包含多组网站的距离矩阵:

dis <- vegdist(correct_tree_data)

我创建了我的&#39;群组&#39;使用&#39;因素&#39;功能(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"))

使用&#39; betadisper&#39;但是,我收到以下错误消息:

  

mod&lt; - betadisper(dis,groups)

     

pts [groups == i ,, drop = FALSE]中的错误:(下标)逻辑   下标太长了

级别确实与距离矩阵中的组数量相匹配。每组重复次数

还有什么可能导致此错误?

1 个答案:

答案 0 :(得分:0)

只要尺寸/长度与此功能匹配,就可以正常工作:

require(vegan)
data(varespec)

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

多变量分散的均匀性

     

致电:betadisper(d = dis,group = group)

     

没有。正特征值:15个负特征值:8

     

到中位数的平均距离:放牧   0.4255

     

PCoA轴的特征值: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)
  

pts [groups == i ,, drop = FALSE]中的错误:(下标)逻辑   下标太长了

我知道您不会认为这是您遇到的问题,因此,如果您提供reproducible example,我们可以进一步调查您的具体案例。