我有一个如下所示的txt文件:
year 1: ... year 2: ... .... .... [data] 1,2,3,4 3,4,5 3,5,6,7,8,9 ...
所以基本上它会在n
行之前有[data]
行,
以及数据线下面的内容是我想要阅读的内容。
我知道我可以手动删除标题,但如果我能让R检测到关键字[data]
并读取之后的内容,那将是理想的。
有什么建议吗?
另外,正如您所看到的,实际数据的每一行都有不同数量的变量 有没有办法读取它以保持行分离?
答案 0 :(得分:4)
一种方法:
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)))
答案 1 :(得分:0)
上述答案非常适合自动检测标志“[data]”,这将使其适用于数据前具有不同行数的输入文件。
如果您只需要执行此操作,则可以在read.csv或read.table的调用中包含“skip =”
例如,read.table(file,skip = n)