r - `save()` 和 `resave()` 的使用 - 使用 R 版本 4.0
问题描述
因此,作为免责声明,我已经阅读了多个线程并尝试了不同的方法,建议这些方法都不起作用。
这是我正在使用的代码,然后我将解释正在发生的事情以及我希望发生的事情:
library('rnoaa')
library('dplyr')
library('utils')
library('cgwtools')
data_type <- c('tmax','tmin','PRCP', 'SNOW', 'SNWD')
## Station ID for MSO is GHCND:USW00024153
## Station ID for GPI is GHCND:USC00244558
## Station ID for BTM is GHCND:USW00024135
for (i in 2009:2019){
start_date <- paste(i, '-01-01', sep = "")
end_date <- paste(i, '-12-31', sep = "")
assign(paste('mso_data', i, sep = ""), ncdc(datasetid = 'GHCND', stationid = 'GHCND:USW00024153',
datatypeid = data_type, startdate = start_date,
enddate = end_date, limit = 1000))
a <- paste('mso_data', i, sep = "")
if (i == 1948){
save(a, file = 'mso_data.RData')
}
else {
resave(a, file = 'mso_data.RData')
}
}
mso_data <- ncdc(datasetid = 'GHCND', stationid = 'GHCND:USW00024153',
datatypeid = data_type, startdate = '2020-01-01',
enddate = '2020-07-07', limit = 1000)
resave(mso_data, file = 'mso_data.RData')
好的,所以我希望使用 RNOAA 软件包下载多年的气候数据。在另一篇文章中,有人向我展示了一种下载这些数据的不同方式,最后,使用他们的方式我仍然需要修复我保存数据的方式。
RNOAA 该功能ncdc()
仅允许下载最多 1 年的数据,因此,如果您想下载 1948 - 2020 年的数据,我设计了上述代码。另外,你会看到 for 循环是 (2009:2019) 我随意选择一次下载 1 个十年,因为下载过程非常耗时。我只是在 (1948:1959) 开始 for 循环,然后是 (1960:1969),ECT...
我知道保存作品的所有代码,每一年的数据在我的全球环境中都是可见的。我遇到问题的地方在于储蓄。我已经尝试了在不同线程中找到的所有以下扩展名(.RData、.Rda、.rds)。然后,当我尝试“读入”该数据时,尽管我可以在计算机上的目标文件夹中看到它,但它并不存在。
最初,我至少能够保存 2020 年的最后几行代码......都在 for 循环之外,但就像我说我正在下载每一年的数据一样,我已经确认了这一点。
谢谢
解决方案
So I tried answer #1 and here is the error I received:
res <- rbindlist(res, idcol="Year")
Error in rbindlist(res, idcol = "Year") :
Column 1 of item 1 is length 3 inconsistent with column 2 which is length 8. Only length-1 columns are recycled.
I went back and all 73 elements of "res" are 1 by 8 tibbles, so I am confused by the column error, unless they do not like the headers as compared to $data. When ncdc()
download, it downloads as a list and the using info is stored in $data.
Also, since I love to learn. From other languages I have always used "for loops" for repetitive tasks. Can someone explain how lapply()
accomplishes this and I am assuming that setnames
is a way to set multiple variables for downloading individual years.
推荐阅读
- autocad - 如何将 LSP 转换为 objectarx C# 以关闭 Autocad 多段线?
- node.js - 从 Nodej.s 调用数据到 react
- git - IntelliJ IDEA - 如何对所有更改(包括非冲突更改)使用合并冲突工具?- 有选择地合并所有更改
- javascript - JS 严格模式 - 访问布尔变量
- django - Django 在开发和生产之间共享大文件存储库
- powerbi - Power BI - 测量以计算不同计数
- c - 使用 GDB:我崩溃了(段错误)。我怎样才能看到导致它的代码行?
- node.js - 我应该使用什么数据类型来正确保存这些数据是 PostgreSQL?
- macos - 如何在 macOS Mojave 中使用 lldb 调试 C 代码?
- ios - 如何正确地从标签栏控制器中的导航控制器之一返回初始登录页面?