0

という名前の関数を呼び出す必要があり、その動作は変数に数回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

ただし、この方法は非常に面倒です。何度もコピペする必要があります。これを実装するよりエレガントな方法はありますか?

4

1 に答える 1