私は関数のリストを持っています。それらを独立したオブジェクトなしで呼び出すことができます。たとえば:リスト内の関数の参照
funcs <- list(foo = function(a, b) a + b,
## in a list, how can I call `foo` from `bar`?
bar = function(m) foo(m, m/2))
私は、現在の場所(例えば../foo
)からではなく、関数呼び出しとして上に移動し、オーバーディレクトリ内に似て何かを探しています。
いくつかのコンテキスト:
いくつかの定義済みのmodeling elementsを持っているパッケージがあります。パラメータ値の範囲を知るために必要な新しい機能の要求があります。これらは現在、リスト内の関数でエンコードされています。例えば、部分最小二乗ため、パラメータ値は1との間で、データセット内の予測子の数の範囲とすることができる:
modelInfo <- list(## other list elements
grid = function(x, y, len = NULL, search = "grid") {
if(search == "grid") {
out <- data.frame(ncomp = seq(1, min(ncol(x) - 1, len), by = 1))
} else {
out <- data.frame(ncomp = unique(sample(1:ncol(x), replace = TRUE)))
}
out
},
## more list elements
)
を私が可能な値をコードするbounds
と呼ばれるリスト要素を追加したいとそれらを参照するのはgrid
です。私はbounds
の関数データをgrid
に渡すことができましたが、それは新しい引数を追加し、多くの後方互換性を破ります。私は他の解決策がコードの大きな変更なしでbounds
grid
から参照することが可能であるとは思わなかった。代わりに、リストの
あなたが解決しようとしている実際の問題は何ですか?この質問は[XY問題](http://xyproblem.info/)のように表示されます。 Rのリストは独自の環境を作成せず、Rの関数は作成された環境で実行されます。 – MrFlick
そのようなリストを使用するのは意味がありません。おそらく、適切な機能を備えた適切なエンクロージャを使用する必要があります。あなたの例は、可能な解決策をテストするのに十分ではありません。あなたが適切な最小限の[再現可能な例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)を作ったなら、可能な解決策を助けてテストする方が簡単です。なぜそれが**リストを持つ**ありますか? – MrFlick