2017-04-12 8 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

あなたがparseと一緒evalを使用することができる数値として表さ画分をしたい場合(例えば、リンクが@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

関連する問題