私は次の問題で頭を悩ましています:リスト付きforループの関数を作成する
いくつかのデータフレームに依存するパラメータを持つforループ内に2つの関数を作成しています。各機能はリストの中に入れられます。
forループ内のパラメータを表示すると、eachh関数が適切に定義されていることがわかります。しかし、ループの外側にあるものを使用すると、最後のパラメータだけが両方の関数に使用されます。次の例では、それを明確にする必要があります。
dt <- data.frame(color = c("red", "blue"),
a = c(3,9),
b = c(1.3, 1.8))
function_list <- list()
for (col in dt$color) {
a <- dt$a[dt$color == col]
b <- dt$b[dt$color == col]
foo <- function(x) {
a*x^b
}
print(paste(col, foo(1)))
function_list[[col]] <- foo
}
[1] "3赤" [1] "ブルー9"
function_list[["red"]](1)
[1] 9
function_list[["blue"]](1)
と
get
作品(前回の質問に対する私の答え)と
R nested for loop to write multiple functions and plot them
同等のソリューション:0
は、[1] 9
に注意することは、これは、次の質問からインスピレーションを得ています。
私はなぜあなたが驚いているのか分かりません。関連する 'a'と' b'の値は、関数を呼び出すときの値であり、関数の定義時ではありません。 – Roland
@Roland関数内で定数値を動的に割り当てる正しい方法は何ですか? – thepule
私は、一見、同等の解決策が割り当てられ、うまくいくという事実にほとんど驚いていました。私は今、割り当てを使用してソリューションを以前に与えられた唯一のプロットが新しいループ内で行われた偶然から働いたことを実現...ありがとう。 – Choubi