【发布时间】:2020-02-03 15:40:09
【问题描述】:
查看this NOAA web page 上的“估计全球趋势每日值”文件。它是一个.txt 文件,包含50 行标题(以#s 开头),后跟几千行表格数据。下载文件的链接嵌入在下面的代码中。
如何读取此文件,以便最终得到一个具有适当列名和数据的数据框(或 tibble)?
我所知道的所有文本到数据的功能都被这些标题行所阻碍。这是我刚刚尝试过的,从this SO Q&A 中提取出来的。我的想法是将文件读入行列表,然后从列表中删除以# 开头的行,然后删除其余的do.call(rbind, ...)。顶部的下载部分工作正常,但是当我运行该函数时,我得到一个空列表。
temp <- paste0(tempfile(), ".txt")
download.file("ftp://aftp.cmdl.noaa.gov/products/trends/co2/co2_trend_gl.txt",
destfile = temp, mode = "wb")
processFile = function(filepath) {
dat_list <- list()
con = file(filepath, "r")
while ( TRUE ) {
line = readLines(con, n = 1)
if ( length(line) == 0 ) {
break
}
append(dat_list, line)
}
close(con)
return(dat_list)
}
dat_list <- processFile(temp)
【问题讨论】:
-
您是否尝试过将
COMMENT=或SKIP=选项与read_delim() 函数一起使用? -
我没有,这也是个好主意。
-
@Reeza,刚刚用
read_delim(delim = "/t", temp, comment = "#")尝试了你的建议。不幸的是,它还用列名对这一行进行了核对,并以字符串格式为我提供了所有内容。所以下面接受的答案更流畅,更健壮。
标签: r dataframe text data-ingestion