niszetの日記

細かい情報を載せていくブログ

(R)関数のテーブル作るのは環境使うので良いだろうか?(メモ)

もう実装しちゃったけど

stylexパッケージはxmlを潰してdata.frame化します。各列ごとにタグが対応していて、処理を変えてあげる必要がありますが、これをするために内部では環境(environment)を使っています。

こんな感じで、列名based_on_valに対応する文字列に対して、関数set_based_on_valを入れておく感じです。

h <- new.env()
h[["based_on_val"]] <- set_based_on_val

これで、列名でこの環境から関数を引っ張ってきてあげればよいので、data.frame化の処理をとおしておけば、処理自体は列に依存しないという考えです。

関数定義とこの環境への代入が別ファイルに分かれてしまう場合、パッケージ作成時には先に関数定義がされてからこの環境への代入が実行されないといけないので、実行順があうようにファイル名を変えるなどするなど注意が必要です。

が、現在列数が100をこえていて、これに対応する関数も増えていく一方なのでもうすこしなんとかしたいところ…。

しかし、タグの構造が項目ごとに違うんですよね。値を設定するものとタグのありなしを考えているものと。親要素がないといじれないものと関係なく追加できるもの…などなど。

いずれ管理が破綻する気がしますが、ひとまずはこれで進めていきます…。