我有以下形式的数据:
>sp|A6NMZ2|SNTAN_HUMAN Sentan OS=Homo sapiens OX=9606 GN=SNTN PE=2 SV=1
39 S AGC/PKA RKMPKRISISKQLAS 25.507 22.884
>sp|O00501|CLD5_HUMAN Claudin-5 OS=Homo sapiens OX=9606 GN=CLDN5 PE=2 SV=1
201 S AGC/PKA LSFPVKYSAPRRPTA 23.138 22.884
207 T AGC/PKA YSAPRRPTATGDYDK 25.897 22.884
>sp|O14618|CCS_HUMAN Copper chaperone for superoxide dismutase OS=Homo sapiens OX=9606 GN=CCS PE=1 SV=1
267 S AGC/PKA AGKGRKESAQPPAHL 25.541 22.884
>sp|O14828|SCAM3_HUMAN Secretory carrier-associated membrane protein 3 OS=Homo sapiens OX=9606 GN=SCAMP3 PE=1 SV=3
32 S AGC/PKA AVIQHRPSRQYATLD 24.52 22.884
76 S AGC/PKA LQPSRKLSPTEPKNY 27.39 22.884如何将这个在R中导入到这样的数据文件中:
A6NMZ2 25.507
O00501 23.138
O00501 25.897等。
发布于 2019-11-22 12:32:43
数据中有一种模式,名称(Column1)位于以"|"分隔的">sp"开头的第二列的行中,而数字(Column2)位于第5列中">sp"行之后的行中,类似于这样的情况:
x <- readLines("myFile.txt")
do.call(rbind,
lapply(split(x, cumsum(grepl(">sp", x, fixed = TRUE))), function(i){
cbind.data.frame(Col1 = unlist(strsplit(i[ 1 ], "|", fixed = TRUE))[ 2 ],
Col2 = read.table(text = i[ 2:length(i) ])[, 5])
}))
# Col1 Col2
# 1 A6NMZ2 25.507
# 2.1 O00501 23.138
# 2.2 O00501 25.897
# 3 O14618 25.541
# 4.1 O14828 24.520
# 4.2 O14828 27.390注意: Bash/regex将是完成此任务的更好工具。
https://stackoverflow.com/questions/58993789
复制相似问题