Ich versuche, einen einfachen iterativen reweighted Least Squares-Algorithmus in R zu schreiben. Ich möchte eine Funktion als Argument für die Berechnung der Gewichte übergeben, aber leider klagt R, dass die Funktion nicht gefunden werden. Irgendwelche Ideen, was ich falsch mache? Danke im Voraus!R: Funktion übergeben als Argument wird nicht gefunden
Hier ist mein Code:
irls <- function(imodel, wfunc, tol) {
repeat {
b0 <- imodel$coef
imodel <- lm(formula(imodel), weights=wfunc(imodel), data=imodel$model)
b1 <- imodel$coef
if(abs((b1-b0)/b0)<=tol) break
}
imodel
}
und ein dummes Beispiel das Problem
x <- 1:100
y <- x + rnorm(100)
mlm <- lm(y~x-1)
irls(mlm, function(x){rep(1,length(x$fit))},0.001) # error: wfunc not found
Seltsam. Es scheint, das Problem ist in "lm". Wenn es versucht, die Funktion in der folgenden Zeile zu finden: 'mf <- eval (mf, parent.frame())' – nograpes
Es kann helfen: http://stackoverflow.com/questions/7027288/error-could-not- find-function-in-r – Fernando
Ich denke, du bist besser dran, deine Funktion zuerst zu definieren. 'wfunc <-funktion (x) {rep (1, length (x $ fit))}' gefolgt von 'irls (mlm, wfunc, 0.001)' –