首页 > 解决方案 > 如何在 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")

```

标签: rdataframefor-loopassign

解决方案


看看这里: https ://www.r-bloggers.com/looping-through-files/

您可以遍历目录中的所有文件并根据您的解决方案转换每个文件。您将拥有file.names[i]可用于 csv 文件名的文件名。


推荐阅读