2012-10-30 52 views

回答

6

目前尚不清楚什麼loadBigObjects()做或者它會尋找ab。它如何從文件或源代碼加載對象?

有很多的選擇,一般:

  • 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()找到並打開對象。

+1

謝謝,這工作完美,但我認爲它是globalenv(),而不是global.env() – nachocab

+0

感謝並修復。 –

+1

@GavinSimpson你的意思是'loadBigObjects < - 函數(列表){'? –

3

不知道什麼loadBigObject是或不,你可以使用lapply一個函數應用於對象

lapply(list("a", "b"), loadBigObject) 

如果爲loadBigObject提供的代碼或者至少描述什麼是應該的名單什麼那麼,可以寫一個更好的loadBigObjects函數。

+0

我只是讀兩個大物體與readRDS – nachocab

2

assign函數可用於定義當前環境以外的環境中的變量。

loadBigObjects <- function(lst) { 
    lapply(lst, function(l) { 
    assign(l, loadBigObject(l), envir=globalenv()) 
    } 
    lst 
} 

(不,這必然是一個好主意。)

相關問題