如何在地理和遗传之间进行Mantel测试(在VEGAN包中),而忽略特定的观察结果?

时间:2017-07-28 11:58:23

标签: r matrix distance vegan

我希望在以千米为单位的地理距离矩阵(矩阵1)和相应的Bray-curtis距离矩阵之间进行壁炉架测试,其中我忽略了那些地理距离为零的值。 (0km的距离表示相邻的样本,这些样本不相同且不应合并,但也不完全相互独立)。因此,我希望将它们保留在我的分析中。

简单的壁炉架测试很简单:我使用基本的

读取地理矩阵
    my_geodist_matrix <-read.table("my_geodist_matrix.txt",header=TRUE,row.names=1) 

矩阵看起来像这样:

        1top    1bottom 2top    2bottom 3top    3bottom
    1top    0   0   20.72   20.72   127.5   127.5
    1bottom 0   0   20.72   20.72   127.5   127.5
    2top    20.72   20.72   0   0   148.137 148.137
    2bottom 20.72   20.72   0   0   148.137 148.137
    3top    127.5   127.5   148.137 148.137 0   0
    3bottom 127.5   127.5   148.137 148.137 0   0

然后,我计算BC距离(使用纯素包):

    my_otu_table.dist<-vegdist(my_otu_table,method="bray")

(看起来像这样):

        1top    1bottom 2top    2bottom 3top
1bottom 0.8341957
  2top 0.9948253 0.9908943 
    2bottom 0.9919492    0.9853757   0.4667466
    3top    0.9482715    0.6923454 0.9926684 0.9882600                                                                                                                                                                                                                                                                                                                                                 3bottom  0.9463127   0.6581957   0.9901074   0.9843602    0.1683397                                                            

做简单的壁炉架测试

    mantel(my_geodist_matrix ,my_otu_table.dist)

到目前为止,没有任何麻烦。但是,当我试图忽略地理矩阵中的0对和相应的Bray-Curtis值时,就会出错。

    my_geodist_matrix <- lapply(my_geodist_matrix, function(x){replace(x, x == 0, NA)})

    my_ otu_table.dist[is.na(my_geodist_matrix)] <- NA 

当我现在进行壁炉架测试时,R会给出以下错误消息:

    Error in as.data.frame.default(x[[i]], optional = TRUE) : 
      cannot coerce class ""dist"" to a data.frame 

    Error in cor(as.vector(xdis), ydis, method = method, use = use) : 
      missing observations in cov/cor

如何以最佳方式进行所需的比较(并且正确!)?

0 个答案:

没有答案