2017-04-12 58 views
0

我有一個對稱的矩陣類似於下面的元素是字符。我試圖找到一種方法將其作爲數據框導出,以便它是數字,並且不強制「NA」。我也想保留行名和列名(不是索引,而是實際名稱)。如何將對稱字符矩陣轉換爲數字數據框?

MYmatrix<- structure(c("0", "2/10", "2/10", "2/10", "0", "3/10", "2/10", 
"3/10", "0"), .Dim = c(3L, 3L), .Dimnames = list(c("t534", "t535", 
"t830"), c("t534", "t535", "t830"))) 

感謝

+0

無法弄清楚如何! – Jack

+0

太棒了!我編輯它。 – Jack

+0

好吧,所以你有分數,你想這些表示爲數字,正確的? – SymbolixAU

回答

1

如果你想表示你可以使用evalparse一起數值的分(例如鏈接指出,@SymbolixAU給你)。

下面是數字輸入矩陣:

MYmatrix02 <- matrix(sapply(MYmatrix, function(x) eval(parse(text = x))), 
    nrow = nrow(MYmatrix), dimnames = dimnames(MYmatrix)) 

> MYmatrix02 
    t534 t535 t830 
t534 0.0 0.2 0.2 
t535 0.2 0.0 0.3 
t830 0.2 0.3 0.0 

或者,如果你想有一個數據幀:

MYdataframe <- as.data.frame(MYmatrix02) 
0

喜歡這個?

library(Matrix) 
s<-matrix(as.factor(letters[1:25]),5) 
s[lower.tri(s)] = t(s)[lower.tri(s)] 
s[ row(s) == col(s) ] <- 0 
s 
     [,1] [,2] [,3] [,4] [,5] 
[1,] "0" "f" "k" "p" "u" 
[2,] "f" "0" "l" "q" "v" 
[3,] "k" "l" "0" "r" "w" 
[4,] "p" "q" "r" "0" "x" 
[5,] "u" "v" "w" "x" "0" 
+0

我編輯的問題,現在你可以看到我在說什麼。 – Jack

相關問題