私は最初のパッケージを開発しており、Rを初めて使用するユーザーを対象としているため、パッケージを使用するために必要なRスキルの量を最小限に抑えるようにしています。結果として、パッケージ内の他の関数のデフォルトを変更する関数が必要です。しかし、「ロックされた環境にバインディングを追加できません」というエラーが発生します。これは、パッケージの環境がロックされており、その関数のデフォルト値を変更できないことを意味します。
同様のエラーをスローする例を次に示します。
library(ggplot2)
assign(formals(geom_point)$position, "somethingelse", pos="package:ggplot2")
私がassignInNamespaceを試してみると、次のようになります。bindingIsLocked(x、ns)のエラー:「ID」のバインディングがありません
assignInNamespace(formals(geom_point)$position,"somethingelse", pos = "package:ggplot2")
これが私が達成したいことの例です。
default <- function(x=c("A", "B", "C")){
x
}
default()
change.default <- function(x){
formals(default)$x <<- x # Notice the global assign
}
change.default(1:3)
default()
これが推奨されるアプローチとはほど遠いことは承知していますが、パッケージの学習曲線を改善するために、手抜きをしたいと思っています。これを達成する方法はありますか?
この質問は、プロジェクト固有の基準で機能デフォルトRを設定する重複としてマークされています。この質問は、インタラクティブセッションのユーザーが関数のデフォルトを変更できるようにする方法に関するものであり、実際に行う方法ではないため、これは別の状況です。古い質問はoptions()関数では解決できなかったため、別の質問になります。