如何使用 R studio 中的循环在 NetCDF 文件中重复创建动态名称?
How to create dynamic names in NetCDF file repeatedly with a loop in R studio?
我已成功将 NetCDF 文件转换为 CSV。但是,我有很多文件要转换。
谁能告诉我如何重复做?
每个 NetCDF 文件,例如 X.20000101.nc4.nc,我必须提取三层,但我有 4000 个文件必须提取。我知道这可以在 Stata 中完成。
R 中是否有任何循环,我可以自动提取第 1 层 (l1)、第 2 层 (l2) 和第 3 层 (l3),并根据每个循环的相应日期(如 2000101)导出 CSV 文件NetCDF 文件?
这是我的代码(有效但非常多余):
```
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 的文件名。
我已成功将 NetCDF 文件转换为 CSV。但是,我有很多文件要转换。
谁能告诉我如何重复做?
每个 NetCDF 文件,例如 X.20000101.nc4.nc,我必须提取三层,但我有 4000 个文件必须提取。我知道这可以在 Stata 中完成。
R 中是否有任何循环,我可以自动提取第 1 层 (l1)、第 2 层 (l2) 和第 3 层 (l3),并根据每个循环的相应日期(如 2000101)导出 CSV 文件NetCDF 文件?
这是我的代码(有效但非常多余):
```
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 的文件名。