0

我的环境中有谷歌地球引擎对象,它们遵循“crop_damname_year”的模式。Damname = 大坝的名称('Alwero', 'Geba', 'Aba_Samuel'),年份是 2001/2002....2019。所以典型的对象可能看起来像 -crop_Dire_2007。我想把这些对象和所有年份的每个大坝制作一个向量,这将被称为cropenv_damname。例如,cropenv_GERD 将是 19 个元素的向量,例如 -crop_GERD_2001、crop_GERD_2002....crop_GERD_2019。我有一个名为“names”的大坝名称向量,它与对象中的damnames 匹配,因为它们来自同一来源。

为此,我运行了一个函数-

#per dam list
listise <-  function(dd){
        tt <- paste('crop',dd, sep='_')
        dv <- lapply(ls(pattern = tt), get)
        var_name <- (paste('cropenv', dd, sep='_'))
        assign(var_name, dv, envir =   .GlobalEnv)
}

lapply(names, listise)

但是,这会创建相应的列表对象,它们是 0 个元素的列表。

但是,如果我为单个大坝单独运行它,这样-

dd <- 'Geba'  

tt <- paste('crop',dd, sep='_')
dv <- lapply(ls(pattern = tt), get)
var_name <- (paste('cropenv',dd,sep='_'))
assign(var_name,dv, env = .GlobalEnv)

它完美地工作,完全符合我的要求。我已经尝试了我能想到的任何方法来修复它,但不幸的是我找不到解决方法。

4

0 回答 0