2015-06-30 168 views
0

我有兩個文件。 一個文件(文件1)是..在R中匹配模式和替換

Symbol pairs 
1 ABAT row1 
2 ACADSB row2 
3 ACTG2 row3 
4 ANXA3 row4 

另一個文件(文件2)是..

rownames Sample1 Sample2 Sample3 
row1-row1 row1-row1 0 0 0 
row1-row2 row1-row2 -1.819133494 0.3023401 -0.8904574 
row1-row3 row1-row3 -3.409451405 0.1103111 -0.9247103 

我要替換 「ROW1」 與 「ABAT」,所以..

gsubr <- function(pattern, replacement, x) { 
    for(i in 1:length(pattern)) 
    x <- gsub(pattern[i], replacement[i], x) 
    x = as.data.frame(x) 
} 
from = file1[,2] 
to = file1[,1] 

file2_rowname = gsubr(from, to, file2[,1]) 

但是「file2_rowname」很奇怪。它包含file1符號中不存在的符號(例如ABAT0,ABAT1,ABAT2 ..)。

我想要這個結果。

rownames Sample1 Sample2 Sample3 
ABAT-ABAT 0 0 0 
ABAT-ACADSB -1.819133494 0.3023401 -0.8904574 
ABAT-ACTG2 -3.409451405 0.1103111 -0.9247103 

給我一個建議。謝謝!!

+0

目前還不清楚你在問什麼。你能提供你期望的或想要的結果嗎? –

回答

1

一兩件事你可以做的就是通過分割正確的基因名字rownames根據-(與strsplit),更換(與match),根據與匹配的data.frame最後的「導火索」回名稱(與paste),將-置於基因名稱之間。

所以,在R語言,這將是,如果與rownames的data.frame被稱爲tab,並與匹配的data.frame被稱爲corresp

tab$rownames <- sapply(lapply(strsplit(tab$rownames, "-"), 
           function(v){corresp$Symbol[match(v, corresp$pairs)]}), 
          function(v){paste(v, collapse="-")}) 
tab 
#  rownames Sample1 Sample2 Sample3 
#1 ABAT-ABAT 0.000000 0.0000000 0.0000000 
#2 ABAT-ACADSB -1.819133 0.3023401 -0.8904574 
#3 ABAT-ACTG2 -3.409451 0.1103111 -0.9247103 

這是你要找的輸出對於?

+0

我收到了一條消息。錯誤在strsplit(tab $ rownames,「 - 」):非字符參數 – mkairs

+0

然後嘗試第一個'tab $ rownames < - as.character(tab $ rownames)'你的變量可能是一個因素 – Cath

+0

我已經這樣做了,但它不起作用。 – mkairs