をの中でweights
引数を使って呼び出すと、奇妙な動作が発生しました。`lapply`の` weights`引数で `lm`を呼び出す際にエラーが発生しました。
私のコードは、lapply
で呼び出す線形モデルを実行する式のリストで構成されています。これまでのところ、それが働いていた:
dd <- data.frame(y = rnorm(100),
x1 = rnorm(100),
x2 = rnorm(100),
x3 = rnorm(100),
x4 = rnorm(100),
wg = runif(100,1,100))
ls.form <- list(
formula(y~x1+x2),
formula(y~x3+x4),
formula(y~x1|x2|x3),
formula(y~x1+x2+x3+x4)
)
res.no.wg <- lapply(ls.form, lm, data = dd)
をしかし、私はweights
引数を追加するとき、私は奇妙なエラーが出ます:
res.with.wg <- lapply(ls.form, lm, data = dd, weights = dd[,"wg"])
Error in eval(extras, data, env) :
..2 used in an incorrect context, no ... to look in
それはlapply
から...
がlm
の...
と競合している場合のようなものですただし、引数のためだけです。
この問題の原因は何ですか?どのように修正するのですか?
注:予想通りlapply
作品なしで呼び出しを使用して:
lm(ls.form[[1]], data = dd, weights = dd[,"wg"])
Call:
lm(formula = ls.form[[1]], data = dd, weights = dd[, "wg"])
Coefficients:
(Intercept) x1 x2
-0.12020 0.06049 -0.01937
EDIT最終呼び出しはタイプのfunction
内lapply
です:
f1 <- function(samp, dat, wgt){
res.with.wg2 <- lapply(ls.form, function(x) {lm(formula = x, data=dat[samp,], weights=dat[samp,wgt])})
}
f1(1:66, dat=dd, wgt = "wg")
これが問題のようです'wem'の関数で' lm'を使うと、以下のように表示されます:https://stackoverflow.com/questions/38683076/ellipsis-trouble-passing-to-lm –
質問があってもこれを再オープンしました。元の質問に対する回答よりもここでの回答が良いので、前に尋ねられます。 https://stackoverflow.com/questions/33479862/use-a-weights-argument-in-a-list-of-lm-lapply-calls –
@ G.Grothendieckは、両方の質問を一緒にリンクさせることが重要ではありませんduping経由で?多分これで他のものを捨てるだろうか? – Sotos