2015-04-15 64 views
1

问题:如何读取R中的文件开头的元数据将被忽略的数据文件?从R中的文件读取数据帧时删除元数据

在下面的例子文件,我们要开始读取到该文件的从行结束

1446.60  35785.0 

例摘录

Axis Energy Elements= 226 

... 

    Etch Time (EtchTime)\s 0.000000  
    Etch Level (EtchLevel)\ 0.000000  
Energy (E) 
eV 
1446.60  35785.0 
1446.80  34955.9 
1447.00  34448.0 
1447.20  33632.6 
1447.40  32905.1 
1447.60  31976.5 

... 

另外,存在尾随的空间两栏中的值,我们如何摆脱它们?使用strip.white=T似乎并没有帮助:

read.table('myFile', sep = '\t', header = F, strip.white = T) 

 V1 V2   V3 V4 
1 1446.6 NA 35785.0000 NA 
2 1446.8 NA 34955.9000 NA 
3 1447.0 NA 34448.0000 NA 
4 1447.2 NA 33632.6000 NA 
5 1447.4 NA 32905.1000 NA 
+3

你有一个'skip'说法。 –

+1

如果元数据的行数未知,则可以先执行'txt < - readLines('myFile'); read.table(text = txt,sep ='\ t',header = FALSE,skip = grep('^ eV',txt))''。 – jbaums

+0

@Pascal明白了,谢谢! – Nyxynyx

回答

1

你可以用pipeawksed从开始编号(Linux)的行读取。

read.table(pipe("awk '/^\\s*(-?[0-9]+(\\.[0-9]*)?\\s*)+$/ {print $0}' Nyxynyx.txt"), 
     header=FALSE) 
#  V1  V2 
#1 1446.6 35785.0 
#2 1446.8 34955.9 
#3 1447.0 34448.0 
#4 1447.2 33632.6 
#5 1447.4 32905.1 
#6 1447.6 31976.5 

注:Nyxynyx.txt是文件