首页 > 解决方案 > 使用magic_for函数在R中嵌套for循环

问题描述

我正在使用的数据集列表:- 1. 气候数据的 .nc 文件 2. 用于从 .nc 文件中检索数据的经纬度城市列表 (53) 3. 工作代码:- 我已成功检索数据53 个城市通过使用 magic_for 循环。所以目前我能够保存 .nc 文件的路径,并通过使用 magic_for 函数检索变量的每日值,例如 tasmin、tasmax、pr 和 tas。这些文件中的每一个都有从 2006 年到 2100 年期间的单个变量的数据。4. 问题:- 现在对于我有 19 个 .nc 文件(每个 5 年)的模型,与之前的 1 个文件(95 年)不同。因此,我想使用上面提到的工作程序运行十九次。5. 代码:- 工作:

tasfilepath<-paste0("path.nc")
model1<-nc_open(tasfilepath)
lonmodel1<-ncvar_get(model1, varid = 'lon')
latmodel1<-ncvar_get(model1, varid = 'lat')
timemodel1<-nc.get.time.series(model1, v="tasmin", time.dim.name = "time")
input<-read.xlsx(file = "cities_1.xlsx", sheetName = "Sheet1")
i<-length(col(input[1]))
magic_for(print1, silent = TRUE)
for (j in 1:i)
{
  alat<-which.min(abs(latmodel1-input[j,2]))
  alon<-which.min(abs(lonmodel1-input[j,3]))
  temp<-nc.get.var.subset.by.axes(model1, "tasmin", axis.indices = list(X=alon, Y=alat))
print1(temp) 
}
df0<-magic_result_as_dataframe()

不工作:

input0<-read.xlsx(file = "sheet with path addresses of .nc files.xlsx")
    i0<-length(col(input0[1]))
    magic_for(print2, silent = TRUE)
    for(k in 1:i0)
    {
        tasfilepath<-paste0(input0[k,2])
        model1<-nc_open(tasfilepath)
        lonmodel1<-ncvar_get(model1, varid = 'lon')
        latmodel1<-ncvar_get(model1, varid = 'lat')
        timemodel1<-nc.get.time.series(model1, v="tasmin", time.dim.name = "time")
        input<-read.xlsx(file = "cities_1.xlsx", sheetName = "Sheet1")
        i<-length(col(input[1]))
        magic_for(print1, silent = TRUE)
        for (j in 1:i)
          {
            alat<-which.min(abs(latmodel1-input[j,2]))
            alon<-which.min(abs(lonmodel1-input[j,3]))
            temp<-nc.get.var.subset.by.axes(model1, "tasmin", axis.indices = list(X=alon, Y=alat))
            print1(temp)
        }
        df0<-magic_result_as_dataframe()
        print2(df0)
    }
    df1<-magic_result_as_dataframe()

错误 - (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :arguments 暗示不同的行数:53, 19 替代方案:即使我可以创建 19 个数据帧和将它们绑定在一起我的问题将得到解决。

标签: rnested-loops

解决方案


推荐阅读