通过dimnames订购矩阵或Dists

时间:2015-10-21 21:17:16

标签: r matrix row col

我正在尝试进行Mantel测试,我有遗传距离矩阵和物理距离矩阵。由于这些矩阵的生成方式,它们的“顺序”相互混淆。令人惊讶的是,我发现很难按行/列名称(即dimnames或维名称)来命令这些矩阵。任何帮助将不胜感激。

下面是一个虚拟样本集:

d1 = matrix(c(0,1,2,1,0,3,2,3,0),nrow=3, ncol=3)
rownames(d1) <- c("A","B","C")
colnames(d1) <- c("A","B","C")

d3 = matrix(c(0,.2,.3,.2,0,.1,.3,.1,0),nrow=3, ncol=3)
rownames(d3) <- c("C","A","B")
colnames(d3) <- c("C", "A","B")

这会创建两个相关的矩阵。让我们假设d1包含有关物种的不同菌株(例如A,B,C)彼此分离多远的信息,而d3含有这些相同分离物之间的成对遗传差异。我需要这两个矩阵以相同的顺序执行壁炉架测试。

当我尝试使用订单时,我松开了矩阵:

d3[order(rownames(d3))]
[1] 0.2 0.3 0.0

d3[order(as.data.frame(rownames(d3)))]
[1] 0.2 0.3 0.0

1 个答案:

答案 0 :(得分:1)

理查德指出,我错过了一个逗号。

d3[order(rownames(d3)), order(colnames(d3))]

完全符合我的要求!