我有一个txt文件,看起来像这样:
年份1: ... 年份2: ... .... .... [数据] 1,2,3,4 3,4,5 3,5,6,7,8,9 ...
所以基本上在[数据]
行之前会有n行,
而在数据行下面的是我想要读取的内容。
我知道我可以手动删除标题,但如果我能让R检测到关键字[数据]
并读取其后面的内容就更理想了。
还有,正如你所看到的,实际数据每行的变量数量不同。
有没有办法读取它,使得行分隔保留?
一种方法是这样的:
csvAfter <- function(file, marker="[data]", blank.lines.skip=FALSE) {
lines <- readLines(file)
i <- match(marker, lines)
if (is.na(i)) {
warning("Didn\'t find ", marker)
return(NULL)
}
f <- textConnection(paste(lines[-(1:i)], collapse="\n"))
on.exit(close(f), add=TRUE)
return(read.csv(f, header=FALSE, fill=TRUE,
blank.lines.skip=blank.lines.skip))
}
例子:
r <- "year 1: ...
year 2: ...
....
....
[data]
1,2,3,4
3,4,5
3,5,6,7,8,9"
print(csvAfter(textConnection(r)))