[英]Why is uniroot.all throwing unused variable error when root function has multiple arguments?
千載難逢的時候,我需要使用來自rootSolve
uniroot.all
來找到具有多個 arguments 的 function 的根。每次我這樣做都會遇到一堆障礙,我最終解決了,但是下次我會忘記我是如何解決它們的。 所以,這次我在這里記錄障礙,希望下次我可以只看這里,看看如何快速解決它們。
這是一些示例代碼:
testFn <- function(x, a, b, thresh){
f <- a * x^2 - b
slack <- f - thresh
return(slack)
}
a <- 1
b <- 2
thresh <- 0
xGuess <- 1
testFn(xGuess, a, b, thresh)
interval <- c(0, 2)
testRoot <- rootSolve::uniroot.all(testFn,
interval = interval,
lower = min(interval),
upper = max(interval),
x = xGuess,
a = a,
b = b,
thresh = thresh)
這應該給出 x 的根等於 2 的平方根,但會拋出以下錯誤:
Error in f(xseq, ...): unused argument (xseq)
我認為問題與我如何將額外參數(如a, b, thresh
)傳遞給testFn()
您的問題包括x = xGuess
:
library(rootSolve)
uniroot.all(testFn,
interval = interval,
lower = min(interval),
upper = max(interval),
#x = xGuess,
a = a,
b = b,
thresh = thresh)
## [1] 1.41418
如果您鍵入uniroot.all
(不帶()
),您可以看到代碼。 它調用f(xreg, ...)
,如果第一個參數是x
並且僅指定了額外的 arguments ( a
、 b
和thresh
在您的情況下),它就可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.