找到一行中的特定字符并阅读它?

时间:2013-04-04 14:52:00

标签: r

我对此有点问题。我所拥有的每个文件的标题如下所示:

*COUNTRY : US                                     *
***************************************************
*CAPITAL : Washington, D.C, district of columbia  *
*Language: English                                *  
***************************************************
V1 V2 V3

然后是我的数据变量(V1,V2,...)。我想要做的只是从每个文件(英语,法语,西班牙语......)中取出语言并将其放入我的剧情脚本中。因为在我阅读文件时,我会在read.table中跳过这些行,否则read.table将无效。希望你理解我的问题。

2 个答案:

答案 0 :(得分:4)

您可以使用以下内容:

## File name
filename <- "/tmp/temp.txt"
## Read the 5 first lines
header <- readLines(filename, n=5)
## Grep the language field in these lines
result <- grep("^\\*Language: .*$", header, value=TRUE)
## Extract the language string
sub("^\\*Language: ", "", result)

请注意,如果语言字段始终位于第4行,您只需执行以下操作:

filename <- "/tmp/temp.txt"
header <- readLines(filename, n=4)
sub("^\\*Language: ", "", header[4])

答案 1 :(得分:1)

我会打开file连接,读取标题数据,然后继续read.table以读取文件的其余部分。这样,您只能读取一次文件。像这样:

f <- file( "data.txt", open = "r" )
language <- NULL
while( TRUE ){
    line <- readLines( f, 1L )
    if( grepl( "*Language: ", line ) ){
        language <- sub( "*Language: (.[*])", "\\1", line )    
    }
    if( !is.null(language) && grepl("^[*][*]", line) ) break
}
read.table( f, header = TRUE )
close( f )