如何在r中的标题之前删除文本

时间:2014-12-06 23:53:56

标签: r

我有一个我想要处理的文本文件。然而,在我获得要导入的数据集之前,我想要删除一大堆文本。我要删除的文本的每一行都以@符号开头,但可以有不同数量的预数据文本行。如何删除此预数据文本。例如:

@HD VN:1.0  SO:unsorted
@SQ SN:chr1 LN:249250621
@SQ SN:chr2 LN:243199373
@SQ SN:chr3 LN:198022430
@SQ SN:chr4 LN:191154276
@SQ SN:chr5 LN:180915260
@SQ SN:chr6 LN:171115067
@SQ SN:chr7 LN:159138663
@SQ SN:chr8 LN:146364022
@SQ SN:chr9 LN:141213431
@SQ SN:chr10    LN:135534747
@SQ SN:chr11    LN:135006516
@SQ SN:chr12    LN:133851895
@SQ SN:chr13    LN:115169878
@SQ SN:chr14    LN:107349540
@SQ SN:chr15    LN:102531392
@PG ID:Bowtie   VN:1.1.0    
Number chr locus
 1      1    10092
 2      12   12313

2 个答案:

答案 0 :(得分:4)

如果您不想保留“@”的实例,可以将“@”设置为注释字符以跳过这些行

read.table("data.txt", comment="@", header=T)

答案 1 :(得分:2)

两种快速方法:

效率低但全部“ R

wholeFile <- readLines('user3632206.csv')
partialFile <- wholeFile[! grepl('^@', wholeFile)]
parsedFile <- read.table(textConnection(partialFile), header = TRUE)
parsedFile
##   Number chr locus
## 1      1   1 10092
## 2      2  12 12313

命令行上的预处理

在命令行中,使用grep(MacOS中的本机和unix,可以在包括cygwin,msys,msys2等在内的多个软件包中找到Windows):

bash$ grep -v '^@' user3632206.csv > user3632206-filtered.csv

在R:

parsedFile <- read.table('user3632206-filtered.csv', header = TRUE)
parsedFile
##   Number chr locus
## 1      1   1 10092
## 2      2  12 12313