为什么我不能使用 R 中的应用函数将 .rda 文件加载到 R 工作区中?
Why can't I use an apply function in R to load .rda files into the R workspace?
我有一个 .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)})
也没有给出任何错误。
运行 一个循环确实将 .rda 文件作为 RasterLayer 对象加载到 R 工作区中:
for (i in 1:length(gewataPath)) {
load(gewataPath[i])
}
我的问题是:为什么我不能使用 apply()
函数将 .rda 文件快速加载到 R 工作区中,我必须使用循环吗?
关于数据:数据包含位于埃塞俄比亚格瓦塔的 RasterLayers(来自 Landsat 卫星)。
load()
会将数据加载到调用它的环境中。当您创建要传递给 sapply
的函数时,该函数会获得它自己的环境。如果您希望对象在 sapply
之后存在,您希望将对象加载到全局环境中,而不是函数环境中。您可以使用 envir=
参数
sapply(gewataPath, function(file) {load(file, envir=globalenv())})
或者只是
sapply(gewataPath, load, envir=globalenv())
我有一个 .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)})
也没有给出任何错误。
运行 一个循环确实将 .rda 文件作为 RasterLayer 对象加载到 R 工作区中:
for (i in 1:length(gewataPath)) {
load(gewataPath[i])
}
我的问题是:为什么我不能使用 apply()
函数将 .rda 文件快速加载到 R 工作区中,我必须使用循环吗?
关于数据:数据包含位于埃塞俄比亚格瓦塔的 RasterLayers(来自 Landsat 卫星)。
load()
会将数据加载到调用它的环境中。当您创建要传递给 sapply
的函数时,该函数会获得它自己的环境。如果您希望对象在 sapply
之后存在,您希望将对象加载到全局环境中,而不是函数环境中。您可以使用 envir=
参数
sapply(gewataPath, function(file) {load(file, envir=globalenv())})
或者只是
sapply(gewataPath, load, envir=globalenv())