する代わりに
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()
によって作成されたオブジェクトまたはtoの呼び出しと組み合わせて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
おそらくより良い関数を書くことができます。
このassign
関数を使用して、現在の環境以外の環境で変数を定義できます。
loadBigObjects <- function(lst) {
lapply(lst, function(l) {
assign(l, loadBigObject(l), envir=globalenv())
}
lst
}
(これは必ずしも良い考えではありません。)