删除R中的dimnames

时间:2015-12-09 19:26:09

标签: r

使用特殊软件我创建了一个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))} 

2 个答案:

答案 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