而不是做
a <- loadBigObject("a")
b <- loadBigObject("b")
我想调用一个函数
loadBigObjects(list("a","b"))
并且能够访问a
和b
对象。
而不是做
a <- loadBigObject("a")
b <- loadBigObject("b")
我想调用一个函数
loadBigObjects(list("a","b"))
并且能够访问a
和b
对象。
目前尚不清楚loadBigObjects()
它会做什么或将在哪里寻找a
和b
。它如何从文件或源代码中加载对象?
一般有很多选择:
sys.source()
允许将 R 文件获取到给定环境load()
这会将.Rdata
文件加载到给定的环境assign()
结合由创建的任何对象loadBigObjects()
或调用来readRDS()
也可以将对象加载到给定的环境中。在您的函数中,您需要使用globalenv()
. 如果您不这样做,那么该对象将仅存在于 running 的评估框架中loadBigObjects()
。例如
loadBigObjects <- function(list) {
lapply(list, function(x) assign(x, readRDS(x), envir = globalenv()))
}
(根据您对@GSee 的回答的评论,并假设list("a","b")
有足够的信息readRDS()
来定位和打开对象。
Without knowing anything about what loadBigObject
is or does, you can use lapply
to apply a function to a list of objects
lapply(list("a", "b"), loadBigObject)
If you provided the code for loadBigObject
or at least describe what it is supposed to do, a better loadBigObjects
function could probably be written.
该assign
函数可用于在当前环境以外的环境中定义变量。
loadBigObjects <- function(lst) {
lapply(lst, function(l) {
assign(l, loadBigObject(l), envir=globalenv())
}
lst
}
(并不是说这一定是个好主意。)