現在、いくつかのモデルを互いに効率的にテストするために自分自身を改善しようとしています。Vectorize()に異なる種類の引数を渡します。
与えられた従属変数(data
の列11)について、説明入力変数によって異なる線形モデルが推定されます。私の願いは、a
とb
というパラメータのペアを持って、私のデータフレームdata
の説明変数の選択の開始と終了の列を決定することです。
これらのパラメータの組み合わせはparameters
に保存されています。その行にパラメータを指定して、ある小節(ここではdf.residual
)の評価を含む列を追加したいと思います。
ただし、問題のベクトル化に失敗します。具体的には、私はa
とb
を正しく渡しますが、data
は渡しません。
# Example data
data = as.data.frame(mtcars)
# Setting the parameters for choosing x-columns
# a is the start column, b the end column
parameters = tidyr::expand(tibble(a=1:5, b = 1:5 * 2),a,b) %>%
dplyr::filter(a<b)
# Define the function called to yield the result
another_fun = function(a, b, data) {
# Vectorize, here's some trouble
case_fun_another = Vectorize(
function(a, b, data=data) {
x = as.matrix(data[,a:b])
y = as.matrix(data[,11])
lm.fit(x=x,y=y)$df.residual
}, SIMPLIFY = FALSE
)
output = case_fun_another(a, b)
return(output)
}
# Calculate result
parameters = dplyr::mutate(parameters, result=another_fun(a, b, data))
その利回り:私はこのトピックに見つけ
promise already under evaluation: recursive default argument reference or earlier problems?
質問は私にとって非常に分かりませんでした。たぶん、問題の説明があれば簡単になります。
これに対処する方法はありますか?私はVectorizeを使う以外の選択肢もあります:-)
あらかじめ多くの感謝を申し上げます。
@李哲源Zheyuan Li:誇り - これは助けてくれました。私はたくさんのことを教えてくれました。ありがとうございます。 – MaHo