"FuncType"引数で示される、特定の形式の別の関数をリニアまたは漸近的に返す関数を開発しています。返される関数の "params"引数にデフォルト値のベクトルを代入したいと思います。R:関数内に関数を作成し、引数をデフォルトとして渡します。
# FuncType is either "lin" or "asymp"
# params is a numerical vector of parameters (length 3 if FuncType is "lin",
# length 4 if FuncType is "asymp")
GenerateFunc <- function(FuncType = "lin", params) {
# Linear case: m (slope), b (intercept), and err (error)
if (FuncType == "lin") {
outfunc <- function(x, params){
m <- params[1]
b <- params[2]
err <- params[3]
outval <- m*x + b + rnorm(1, 0, err)
return(outval)
}
}
# Asymptotic case: a (slope), b (curvature), c (rate of convergence), and err (error)
if (FuncType == "asymp") {
outfunc <- function(x, params){
a <- params[1]
b <- params[2]
c <- params[3]
err <- params[4]
outval <- (a * x)/(b*x + c) + rnorm(1, 0, err)
return(outval)
}
}
return(outfunc)
}
は「GenerateFunc」は、所望の機能を作成しますが、デフォルトの引数として「outfunc」に「のparams」を渡しません:あなたの指導を事前に
myfunc <- GenerateFunc("asymp", params = rep(1,4))
myfunc(x = 10)
Error in myfunc(x = 10) : argument "params" is missing, with no default
感謝を。
乾杯、 ネイト
それはあなたがそれを教えていないため、デフォルトの引数としてparams
を使用していない
ありがとう!私は "params = params"を以前にうまく試してみましたが、私の再現可能なバージョンにそれを含めるのを忘れました。 –