Tôi đang cố viết một thuật toán hình vuông nhỏ nhất được lặp lại trong R. Tôi muốn chuyển một hàm làm đối số để tính trọng số, nhưng tiếc là R phàn nàn rằng hàm không thể được tìm thấy. Bất kỳ ý tưởng những gì tôi đang làm sai? Cảm ơn trước!R: chức năng được truyền dưới dạng đối số không được tìm thấy
Đây là mã của tôi:
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
}
và một ví dụ ngớ ngẩn để chứng minh vấn đề
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
Lạ. Có vẻ như vấn đề nằm trong 'lm'. Khi nó cố tìm hàm trong dòng sau: 'mf <- eval (mf, parent.frame())' – nograpes
Nó có thể giúp: http://stackoverflow.com/questions/7027288/error-could-not- find-function-in-r – Fernando
Tôi nghĩ rằng bạn nên tắt chức năng của mình trước tiên. 'wfunc <-function (x) {rep (1, length (x $ fit))}' theo sau với 'irls (mlm, wfunc, 0.001)' –