当前位置: 首页 > 知识库问答 >
问题:

如何查看特定的'predict'函数的源代码?[副本]

朱兴安
2023-03-14

根据文档,predictr中的一个多态函数,根据作为第一个参数传递的内容,实际上会调用不同的函数。

但是,文档没有给出predict实际为任何特定类调用的函数名称的任何信息。

如果我想查看在glmnet类型的对象上调用predict函数时的源代码,那么最简单的方法是什么?

共有1个答案

宗政卓
2023-03-14

您可以使用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>
 类似资料:
  • 我想看看一个函数的源代码,看看它是如何工作的。我知道我可以通过在提示符下键入函数名称来打印函数: 在这种情况下,是什么意思?如何找到实际使用的源代码,例如:? 如何查找和等函数? 在另一些情况下,有一些R代码,但大部分工作似乎是在其他地方完成的。 如何找到函数的功能?类似地,某些函数调用、、、或。我怎样才能找到这些的源代码?

  • 问题内容: 使用Eclipse,我想查看核心Java类(Eg )的源代码,但是当我使用“打开声明”导航到源代码时,它显示“未找到源代码”,并提供了附加源代码的选项。 我的问题是;我如何附加来源?我从哪里获得库的源.jar ? 问题答案: 您需要安装JDK。那你可以看看 对我来说(取决于您当前的版本) 您无需获取特殊的开源版本。

  • 问题内容: 是否有任何的方式来查看Java中的默认类背后的实际代码(,,等),看看 究竟 它是什么,是怎么回事? 我不仅指文档或方法列表等,还包括源代码本身的详细信息(换句话说,如果将其复制并粘贴到整个方法/类中,则可以用来创建整个方法/类的精确副本) Java程序的代码)。 问题答案: JDK安装程序在名为的文件中提供了所有API类的Java源代码。它通常只是坐在您的安装目录中。解压缩,看看。

  • 我点击 build.gradle里 dependencies 块中的 { implementation } IDEA跳转到: 我点击 build.gradle 里的关键字 dependencies { IDEA跳转到: 这2个文件只有接口,都不是实现源码,可我的gradleHome是all 版本的,不是bin 版本的,怎么还看不到源码呢 ?

  • 问题内容: MySQL中有一些值: , , 等 我如何看到一个特定的价值?该手册说: 您可以通过发出SELECT @@ sql_mode语句来检索当前模式。 但是它什么也没显示,只是表中的一个空白字段作为列名。 问题答案: 它对您来说只是空白,因为您尚未设置sql_mode。如果您进行设置,则该查询将向您显示详细信息:

  • 问题内容: 假设我有如下定义的Python函数: 我可以使用获取函数的名称。如上所述,我如何以编程方式获取其源代码? 问题答案: 如果该功能来自文件系统上可用的源文件,则可能会有帮助: 如果foo定义为: 然后: 返回值: 但是我相信,如果函数是从字符串,流中编译的,或者是从编译文件中导入的,那么您将无法检索其源代码。