[英]How to create a symmetrical data frame in R based on another symmetrical dataframe
[英]How to convert a symmetrical character matrix to a numerical data frame?
我有一個類似於下面的對稱矩陣,其中元素是字符。 我正在嘗試找到一種將其導出為數據框的方式,以便它是數字形式的,並且不強制使用“ 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")))
謝謝
如果您希望分數表示為數值,則可以將eval
與parse
一起使用(例如,鏈接說明了@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)
像這樣?
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"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.