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()
來指定加載對象作爲全局環境的環境。如果您不這樣做,那麼該對象將只存在於運行loadBigObjects()
的評估框架中。例如。
loadBigObjects <- function(list) {
lapply(list, function(x) assign(x, readRDS(x), envir = globalenv()))
}
(按你的意見,以@ GSEE的答案,並假設list("a","b")
足夠的信息供readRDS()
找到並打開對象。
不知道什麼loadBigObject
是或不,你可以使用lapply
一個函數應用於對象
lapply(list("a", "b"), loadBigObject)
如果爲loadBigObject
提供的代碼或者至少描述什麼是應該的名單什麼那麼,可以寫一個更好的loadBigObjects
函數。
我只是讀兩個大物體與readRDS – nachocab
assign
函數可用於定義當前環境以外的環境中的變量。
loadBigObjects <- function(lst) {
lapply(lst, function(l) {
assign(l, loadBigObject(l), envir=globalenv())
}
lst
}
(不,這必然是一個好主意。)
謝謝,這工作完美,但我認爲它是globalenv(),而不是global.env() – nachocab
感謝並修復。 –
@GavinSimpson你的意思是'loadBigObjects < - 函數(列表){'? –