从" txt"导入特定行进入R.

时间:2016-02-17 18:03:34

标签: r import

我有一个" example.txt"文件如下:

SIGNAL: 40 41 42                                            
0.406   0.043   0.051   0.021   0.013                   
0.056   0.201   0.026   0.009   0.000                   
0.000   0.128   0       0.009   0.000                               
TOTAL: 0.657                                            
SIGNAL: 44 45 46 48                                         
0.128   0.338   0.026                       
0.333   0.03    0.000                           
0.060   0.013   0.004                           
0.009   0.017   0.009                           
0.013   0       0.000                           
TOTAL: 0.704                                            
SIGNAL: 51 52 54                                            
0.368   0.081   0.085   0.004                       
0.162   0.09    0.064   0.073                       
0.013   0.017   0.009   0.000                       
TOTAL: 0.266                                            
SIGNAL: 60 61 62 63 64 65 66 67                                         
0.530   0.030                                   
0.009   0.179                                   
0.154   0.004                                   
0.068   0.009                                   
TOTAL: 0.796    

我想在" SIGNAL:44 45 46 48"之间导入行。和" TOTAL:0.704"在R中,我使用read.table("example.txt",skip=6 ,nrow=5)来提取这些特定的行,它可以工作。

     V1    V2    V3
1 0.128 0.338 0.026
2 0.333 0.030 0.000
3 0.060 0.013 0.004
4 0.009 0.017 0.009
5 0.013 0.000 0.000

然而,如果我想在" SIGNAL:3000 3001 3002 3003"之间提取行,我的真实数据(有450,000行)非常大。和下一个" TOTAL",我该怎么办呢?非常感谢你!

1 个答案:

答案 0 :(得分:0)

我已根据akrun的代码进行了解决。例如,我想提取前两组。我可以使用:

lines <- readLines('example.txt')
g<-c(40,44)
sapply(1:length(g), function(x){Map(function(i,j) read.table(text=lines[(i+1):(j-1)], sep='', header=FALSE), grep(paste('SIGNAL:',g[x]), lines), grep('TOTAL', lines)[which(grep(paste('SIGNAL:',g[x]), lines)==grep('SIGNAL', lines))])})