ドキュメントに基づいて、predict
はポリモーフィック関数でR
あり、最初の引数として渡されるものに応じて、実際には異なる関数が呼び出されます。
predict
ただし、ドキュメントには、特定のクラスを実際に呼び出す関数の名前に関する情報はありません。
通常、関数の名前を入力してそのソースを取得できますが、これは では機能しませんpredict
。
predict
タイプ のオブジェクトで呼び出された関数のソース コードを表示したい場合glmnet
、最も簡単な方法は何ですか?
ドキュメントに基づいて、predict
はポリモーフィック関数でR
あり、最初の引数として渡されるものに応じて、実際には異なる関数が呼び出されます。
predict
ただし、ドキュメントには、特定のクラスを実際に呼び出す関数の名前に関する情報はありません。
通常、関数の名前を入力してそのソースを取得できますが、これは では機能しませんpredict
。
predict
タイプ のオブジェクトで呼び出された関数のソース コードを表示したい場合glmnet
、最も簡単な方法は何ですか?
を使用して関数を探すことができますgetAnywhere
getAnywhere("predict.glmnet")
## A single object matching ‘predict.glmnet’ was found
## It was found in the following places
## registered S3 method for predict from namespace glmnet
## namespace:glmnet
## with value
##
## function (object, newx, s = NULL, type = c("link", "response",
## "coefficients", "nonzero", "class"), exact = FALSE, offset,
## ...)
## {
## type = match.arg(type)
## if (missing(newx)) {
## if (!match(type, c("coefficients", "nonzero"), FALSE))
## stop("You need to supply a value for 'newx'")
## }
## if (exact && (!is.null(s))) {
## lambda = object$lambda
## which = match(s, lambda, FALSE)
## if (!all(which > 0)) {
## lambda = unique(rev(sort(c(s, lambda))))
## object = update(object, lambda = lambda)
## }
## }
## a0 = t(as.matrix(object$a0))
## rownames(a0) = "(Intercept)"
## nbeta = rbind2(a0, object$beta)
## if (!is.null(s)) {
## vnames = dimnames(nbeta)[[1]]
## dimnames(nbeta) = list(NULL, NULL)
## lambda = object$lambda
## lamlist = lambda.interp(lambda, s)
## nbeta = nbeta[, lamlist$left, drop = FALSE] * lamlist$frac +
## nbeta[, lamlist$right, drop = FALSE] * (1 - lamlist$frac)
## dimnames(nbeta) = list(vnames, paste(seq(along = s)))
## }
## if (type == "coefficients")
## return(nbeta)
## if (type == "nonzero")
## return(nonzeroCoef(nbeta[-1, , drop = FALSE], bystep = TRUE))
## if (inherits(newx, "sparseMatrix"))
## newx = as(newx, "dgCMatrix")
## nfit = as.matrix(cbind2(1, newx) %*% nbeta)
## if (object$offset) {
## if (missing(offset))
## stop("No offset provided for prediction, yet used in fit of glmnet",
## call. = FALSE)
## if (is.matrix(offset) && dim(offset)[[2]] == 2)
## offset = offset[, 2]
## nfit = nfit + array(offset, dim = dim(nfit))
## }
## nfit
## }
## <environment: namespace:glmnet>
呼び出すmethods(predict)
と、特定のクラスに対して定義されているすべてのメソッドが表示されます。たとえば、次のようになります。
> methods(predict)
[1] predict.ar* predict.Arima* predict.arima0* predict.glm
[5] predict.HoltWinters* predict.lm predict.loess* predict.mlm
[9] predict.nls* predict.poly predict.ppr* predict.prcomp*
[13] predict.princomp* predict.smooth.spline* predict.smooth.spline.fit* predict.StructTS*
a の予測関数glmnet
はおそらくpredict.glmnet
.