10

私の最近のCRANへの提出は、現在眉をひそめている地球環境への割り当てがあるため、返送されました。

ユーザーが居住している状態(米国の場合と同様)に基づいた構成パラメーターを含む埋め込みデータセット(sysdata.rda)があります。新しいユーザーがプログラムを使用するときに、この埋め込みデータセットを更新できるようにしたかったのです。以前、ユーザーが使用する初期関数でこのデータを更新し、グローバル割り当てを介してユーザーがアクセスできるようにしました。

この埋め込みデータを更新して、ユーザーがセッションの残りの部分で使用するデフォルトのデータにする方法を理解するのに苦労しています。

以前はデータを/dataに格納していましたが、最近はそのロケールに適していると思われるため、/ R/sysdata.rdaに切り替えました。今はよくわかりません。

どんな助けでも大歓迎

4

2 に答える 2

4

重要なのは、地球環境以外の環境で割り当てを行うことです。新しい環境を使用するか、明示的に作成するというlocal()2つの基本的な手法があります。<<-

明示的な環境での作業は簡単です。環境を作成してから、リストのように環境に割り当てます。

my_opts <- new.env(parent = emptyenv())
set_state <- function(value) my_opts$state <- value
get_state <- function() my_opts$state

使用local()はもう少し複雑で、いくつかのトリックが必要です<<-

set_state <- NULL
get_state <- NULL

local({
  state <- NULL
  get_state <<- function() state
  set_state <<- function(value) state <<- value
})

<<-動作の詳細については、https://github.com/hadley/devtools/wiki/environmentsの「割り当て:名前を値にバインドする」セクションを参照してください。

于 2013-01-13T20:21:09.250 に答える
1

ユーザーが呼び出したときにデータをロードして更新するfoo.Rファイルを用意してみませんか?これは、で許可されているオプションの1つですが、R拡張機能の記述から次の点に注意してください。/datadata(foo)/data

Rコードは「自給自足」であり、パッケージによって提供される追加機能を利用しないようにする必要があることに注意してください。これにより、パッケージをロードせずにデータファイルを使用することもできます。

その制限に耐えdata(foo)られる場合は、データをロードして更新し、特定の名前付きオブジェクトにあることを確認して、関数で参照することができます。

于 2013-01-13T11:42:58.690 に答える