R で変更不可能な変数を定義する


R で変更不可能な変数を作るには lockBinding 関数を使います。

a <- 1
lockBinding("a", .GlobalEnv)

変数を定義してから lockBinding すると誤って変更してしまう場合があるので,定義と定数化を同時に行います。

constAssign <- function(x, value, envir=as.environment(-1)) {
   e <- envir
   assign(x, value, envir=e)
   lockBinding(x, e)
}

assign 関数と同様に,次のように使うことができます。

constAssign("FOO", 1)

定義した定数を削除する場合は,普通に rm 関数で問題ありません。

rm(FOO)

参考文献

履歴

  • [2013-05-14 19:30] envir 引数の処理を修正。