2016-06-25 121 views
0

我希望将p值和距离表示为单个矩阵中的下三角和上三角元素。虽然我设法创造一个既UT或LT矩阵,我也奔无法将它们合并成一个单一的数据帧R.将上三元矩阵和下三元矩阵组合成单个数据帧

dist[(upper.tri(dist,diag=FALSE))]=0 #upper tri of distances 
pval[(lower.tri(pval,diag=FALSE))]=0 #lower tri of p-values 

我想下面的行,但不工作

dist[(upper.tri(dist,diag=FALSE))]=pval[(lower.tri(pval,diag=FALSE))] 

任何可能的方式做到这一点?

+0

你想如何合并?请提供一份dist和预期产出的样本。 –

回答

0

我敢肯定,这可以更优雅的完成,但我认为这你想要做什么:

a <- matrix(0, nrow = 10, ncol = 10) 
b <- matrix(1, nrow = 10, ncol = 10) 

a[upper.tri(a)] 
b[lower.tri(b)] 

new <- matrix(NA, nrow = 10, ncol = 10) 
new[upper.tri(new)] <- a[upper.tri(a)] 
new[lower.tri(new)] <- b[lower.tri(b)] 
new 

由于您没有提供一个可重复的例子,我不能肯定,但基本上我只需取上面和下面的矩阵(0和1中的一个)并将它们合并到new中。作为概念验证,新对角线上方有0,下方1秒,对角线上有NAs。希望这可以让你对你的问题有所了解。

+0

谢谢!这正是我所期待的,但我写的很多内容都很笨拙。再次感谢! –

相关问题