我有两个文件。 一个文件(file1)是..
$ cd android-sdk/platform-tools/systrace
$ python systrace.py --time=10 -o mynewtrace.html sched gfx view wm
另一个文件(file2)是..
Symbol pairs
1 ABAT row1
2 ACADSB row2
3 ACTG2 row3
4 ANXA3 row4
我想将“row1”替换为“ABAT”,所以..
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
但是“file2_rowname”很奇怪。它包含file1的符号中不存在的符号(例如ABAT0,ABAT1,ABAT2 ..)。
我想要这个结果。
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])
给我一个建议。谢谢!
答案 0 :(得分:1)
您可以做的一件事是根据rownames
(-
)拆分strsplit
,将row.
替换为正确的基因名称(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
这是您要找的输出吗?