1

グローバル環境 (関数とデータを含む) をファイルに保存し、それを新しい環境 (グローバル環境ではない) にロードしその環境内での関数呼び出し。ただし、環境内の他の関数を呼び出す関数で問題が発生しています。次に例を示します。

f1 <- function(x) x*2
f2 <- function(y) f1(y) + 1
save(list=ls(), file="env.RData")
rm(list=ls())

jobenv <- new.env(parent=globalenv())
load("env.RData", envir=jobenv)
expr <- quote(f2(3))
eval(expr, envir=jobenv)

失敗します:

Error in f2(3) : could not find function "f1"

一方、環境を最初にアタッチすると機能します。

> attach(jobenv)
> eval(expr)
[1] 7

を使用する以外に、逆シリアル化された環境でネストされた関数呼び出しを正常に評価する方法はありattachますか?

(この質問は R からフォークされました -コメンターの提案に基づいて、環境内のネストされた関数を評価します)

4

0 に答える 0