R 如何将对称字符矩阵转换为数字数据帧?

R 如何将对称字符矩阵转换为数字数据帧?,r,matrix,dataframe,R,Matrix,Dataframe,我有一个类似于下面的对称矩阵,其中元素是字符。我正试图找到一种方法,将其导出为数据帧,这样它就可以是数字的,并且不会强制使用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("

我有一个类似于下面的对称矩阵,其中元素是字符。我正试图找到一种方法,将其导出为数据帧,这样它就可以是数字的,并且不会强制使用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")))
像这样谢谢你

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" 

如果您想将分数表示为数值,可以将eval与parse一起使用,例如@symbolxau提供给您的链接

这是一个包含数字项的矩阵:

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)

不知道怎么做!伟大的我编辑了它。好的,你有分数,你想把它们表示成数字,对吗?也许我可以帮你编辑这个问题,现在你可以确切地看到我在说什么了。