为什么我不能在 R 中使用应用函数将 .rda 文件加载到 R 工作区?

Syt*_*tze 2 r raster rda sapply

我有一个 .rda (RData) 文件列表。我想快速将此数据加载到 R 中,而不必load多次调用该函数。我想到将load()函数与sapply. 但是,使用以下代码,不会在工作区中加载任何 R 对象:

# List files    
gewataPath <- list.files(path = file.path(datdir), pattern = glob2rx('Gewata*.rda'), full.names = T)
# Load files
sapply(gewataPath, function(file) {load(file)})
Run Code Online (Sandbox Code Playgroud)

它也不会给任何错误。

运行循环确实会将 .rda 文件作为 RasterLayer 对象加载到 R 工作区中:

for (i in 1:length(gewataPath)) {
  load(gewataPath[i])
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么我不能使用apply()函数将 .rda 文件快速加载到 R 工作区中,我是否必须使用循环?

关于数据:数据包含位于埃塞俄比亚 Gewata 的 RasterLayers(来自 Landsat 卫星)。

MrF*_*ick 5

load()将数据加载到调用它的环境中。当您创建要传递给 的sapply函数时,该函数将获得自己的环境。如果您希望对象存在于 之后sapply,您希望将对象加载到全局环境中,而不是函数环境中。你可以用envir=参数来做到这一点

sapply(gewataPath, function(file) {load(file, envir=globalenv())})
Run Code Online (Sandbox Code Playgroud)

要不就

sapply(gewataPath, load, envir=globalenv())
Run Code Online (Sandbox Code Playgroud)