という名前の関数を呼び出す必要があり、その動作は変数に数回g
依存します。globalenv()
便宜上、これを という名前のヘルパー関数にラップしてみf
ます。f
ただし、 を実行した後、globalenv()
が不変であることを願っています。
これまでの私の実装は次のとおりです。
g <- function(name) {
print(globalenv()[[name]])
}
f <- function(w) {
# backup "w" in globalenv if needed
is_existed.w <- !is.null(globalenv()[["w"]])
if (is_existed.w) {
temp.w <- globalenv()[["w"]]
}
w <<- w
g("w")
# restore w if needed
if (is_existed.w) {
w <<- temp.w
}
}
w <- "a"
f("gg")
w
ただし、この方法は非常に面倒です。何度もコピペする必要があります。これを実装するよりエレガントな方法はありますか?