我希望在以千米为单位的地理距离矩阵(矩阵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
如何以最佳方式进行所需的比较(并且正确!)?