gpt4 book ai didi

r - 从R中的URL读取.txt文件时出错

转载 作者:行者123 更新时间:2023-12-03 08:53:23 30 4
gpt4 key购买 nike

从Web读取数据到R时遇到一些问题。

我希望下载的数据存储在here中,您可以在此页面上插入站号,然后定向到数据集。例如,如果我在框中输入站号615071800000,我将被重定向到另一个页面,然后可以在其中选择数据并要求在浏览器中查看txt文件。

由于我要从大量工作站中获取数据,因此我决定在R中编写脚本来执行此操作。下面是一个示例:

site_id <- c('615071800000','629065900000','617106090000','617107080000',
'615071900000','646066100000','646066420010','646067000000')
for (i in 1:length(site_id)){
web_str <- 'http://data.giss.nasa.gov/tmp/gistemp/STATIONS/tmp_'
str <- paste(web_str,site_id[i],'_14_0/station.txt', sep = '')

# read data from web
dat <- read.table(str, sep = "", header = TRUE,
fill = TRUE, na.string = c(999.9,999.90))
}

这些都是有效的网站ID,提供并用于生成“str”的链接应将我引导至数据。但是,当我在此示例集上运行代码时,它将失败。运行此示例,我得到:
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") : cannot open: HTTP status was '404 Not Found'

对我来说这发生在循环i == 7

因此,我将i = 7的“str”复制到浏览器中

http://data.giss.nasa.gov/tmp/gistemp/STATIONS/tmp_646066420010_14_0/station.txt

但页面为空,页面顶部显示消息“未找到”。

但是,如果我返回主页(即此处提供的第一个链接)并在字段中键入站号,则会将我带到数据中,然后将该页面的链接复制到R中:

http://data.giss.nasa.gov/tmp/gistemp/STATIONS/tmp_646066420010_14_0/station.txt

原来是我之前尝试过的字符串。为什么这不起作用?更奇怪的是,如果我现在再次尝试运行代码,R现在会在i == 8时返回相同的错误,即找到的是前一个文件,而不是下一个文件。这里发生了什么?这是网站的问题吗,例如txt文件仅在您手动搜索该首页上的站点时生成?是否有解决方法,或者有人对我如何进行这项工作提出建议?或者有人可以证明这也是另一台计算机上的问题。

最佳答案

您可以通过使用curlGetHeaders请求其标题来触发该站点。然后,创建临时文件,您便可以接收数据。
尝试这个:

dat <- lapply(site_id, function(id) {
web_str <- 'http://data.giss.nasa.gov/tmp/gistemp/STATIONS/tmp_'
data_str <- paste(web_str,id,'_14_0/station.txt', sep = '')
header_str <- paste('http://data.giss.nasa.gov/cgi-bin/gistemp/find_station.cgi?dt=1&ds=14&name=', id, sep = '')
curlGetHeaders(header_str)
read.table(data_str, sep = "", header = TRUE, fill = TRUE, na.string = c(999.9,999.90))
})

关于r - 从R中的URL读取.txt文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34809145/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com