r - 如何在 R studio 中循环重复创建 NetCDF 文件中的动态名称?
问题描述
我已成功将 NetCDF 文件转换为 CSV。但是,我有很多文件要转换。
谁能建议如何反复做?
每个 NetCDF 文件,例如 X.20000101.nc4.nc,我必须提取三层,但我必须提取 4000 个文件。我知道这可以在Stata中完成。
R 中是否有任何循环可以自动提取第 1 层(l1)、第 2 层(l2)和第 3 层(l3)并根据每个 NetCDF 文件的相应日期(如 2000101)导出 CSV 文件?
这是我的代码(它有效但非常多余):
```
data20000101 <- nc_open("X.20000101.nc4.nc")
# Extract the 1st layer in X.20000101.nc4.nc
l1 <- brick("X.20000101.nc4.nc", varname="T", "level"=1)
for (n in 1:4) {
assign(paste("a", n, sep="_"), as.data.frame(l1[[n]], xy=T))
}
write.csv(cbind(a_1,a_2,a_3,a_4), "20000101_l1.csv")
# Extract the 2nd layer in the same file X.20000101.nc4.nc
l2 <- brick("X.20000101.nc4.nc", varname="T", "level"=2)
for (n in 1:4) {
assign(paste("b", n, sep="_"), as.data.frame(l2[[n]], xy=T))
#read the first layer in the brick as a data frame
}
level2<-cbind(b_1,b_2,b_3,b_4)
write.csv(level2, "20000101_l2.csv")
# Extract the 3rd layer in the same file X.20000101.nc4.nc
l3 <- brick("X.20000101.nc4.nc", varname="T", "level"=3)
for (n in 1:4) {
assign(paste("c", n, sep="_"), as.data.frame(l3[[n]], xy=T))
#read the first layer in the brick as a data frame
}
level3<-cbind(c_1,c_2,c_3,c_4)
write.csv(level3, "20000101_l3.csv")
```
解决方案
看看这里: https ://www.r-bloggers.com/looping-through-files/
您可以遍历目录中的所有文件并根据您的解决方案转换每个文件。您将拥有file.names[i]
可用于 csv 文件名的文件名。
推荐阅读
- git - 如何在使用 gitversion 修复错误后自动增加补丁版本
- windows - 如何使用 nginx-fpm 在 Windows 10 上使用 DDEV 创建虚拟主机?
- sql - 查询以比较医院人口普查中缺少患者的日期
- javascript - 写在一个页面内的脚本会影响另一个页面
- amazon-web-services - 无法使用带有无服务器的 aws-sdk 将事件放入云监视日志流
- python - discord.py - 'list' 对象没有属性 'id'
- bash - 当您将数据输出到文件时,将文件拖放到 bash 脚本会导致“权限被拒绝”
- qt - 如何使与 QTimer::timeout 关联的插槽可以被任何其他信号处理器(更高优先级)中断然后恢复?
- excel - 突出显示包含今天日期的日期范围
- jquery - jQuery Mobile $.mobile.changePage 跳回上一页