首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导入没有以逻辑方式排序的数据

导入没有以逻辑方式排序的数据
EN

Stack Overflow用户
提问于 2019-11-22 11:56:05
回答 1查看 34关注 0票数 1

我有以下形式的数据:

代码语言:javascript
复制
>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中导入到这样的数据文件中:

代码语言:javascript
复制
A6NMZ2 25.507
O00501 23.138
O00501 25.897

等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-22 12:32:43

数据中有一种模式,名称(Column1)位于以"|"分隔的">sp"开头的第二列的行中,而数字(Column2)位于第5列中">sp"行之后的行中,类似于这样的情况:

代码语言:javascript
复制
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将是完成此任务的更好工具。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58993789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档