2016-06-25 160 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

謝謝!這正是我所期待的,但我寫的很多內容都很笨拙。再次感謝! –

相關問題