使用特殊软件我创建了一个matrix.txt文件,如下所示:
Motif name AKB_CTCF-h1 AKO_CTCF-h1 AKZ_POLR2A1 AKZ_POLR2A2
AKB_CTCF-h1 0.0 x x x
AKO_CTCF-h1 0.40813213491755684 0.0 x x
AKZ_POLR2A1 0.9919703678068019 0.9936696431797781 0.0 x
AKZ_POLR2A2 0.9911213889835596 0.9921991780345707 0.9782693635624957 0.0
我正在尝试使用as.dist创建一个DistanceMatrix ... 如果我手动删除matrix.txt(“motif”“name”)中的前两个字符串,它可以工作,但我想在R ... 我想要一个平方的矩阵......我想删除“motif”“name”...... 我需要帮助......
dm<- read.table(file= "C:matrix.txt",header=FALSE)
print(dm<-as.dist(dm,diag = TRUE))}
答案 0 :(得分:0)
试试这个
> dm.txt <- readLines("C:matrix.txt")
> dm.txt[1] <- gsub("Motif name", "", dm.txt[1])
> dm <- read.table(text=dm.txt, stringsAsFactors=FALSE)
> dm[dm=="x"] <- ""
> dm.mat <- as.dist(dm, diag=TRUE)
> dm.mat
AKB_CTCF-h1 AKO_CTCF-h1 AKZ_POLR2A1 AKZ_POLR2A2
AKB_CTCF-h1 0.0000000
AKO_CTCF-h1 0.4081321 0.0000000
AKZ_POLR2A1 0.9919704 0.9936696 0.0000000
AKZ_POLR2A2 0.9911214 0.9921992 0.9782694 0.0000000
答案 1 :(得分:0)
这适合我。
# read in the text file
txt <- read.table(file="C:matrix.txt",
header=FALSE, fill=TRUE, as.is=TRUE, na.strings="x")
txt
# create matrix of numbers
m <- as.matrix(txt[-1, -c(1, dim(txt)[2])])
m <- apply(m, 2, as.numeric)
# assign names to rows and columns
dimnames(m) <- list(txt[-1, 1], txt[1, -(1:2)])
m
# convert to distance matrix
dm <- as.dist(m, diag=TRUE)
dm