R中查看函数源代码

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:58   1343   0
1、简单的函数(非类函数),直接在R里面输入函数名就可以查看源代码,例如:
> replace
function (x, list, values)
{
x[list] <- values
x
}
2、 对于类函数,直接输入函数名不能显示出源代码,例如:
> summary
function (object, ...)
UseMethod("summary")
这时候需要用到methods()函数,用法methods(FunctionName)如下:
> methods(summary)
[1] summary.aov summary.aovlist summary.aspell*
[4] summary.connection summary.data.frame summary.Date
[7] summary.default summary.ecdf* summary.factor
[10] summary.glm summary.infl summary.lm
[13] summary.loess* summary.manova summary.matrix
[16] summary.mlm summary.nls* summary.packageStatus*
[19] summary.PDF_Dictionary* summary.PDF_Stream* summary.POSIXct
[22] summary.POSIXlt summary.ppr* summary.prcomp*
[25] summary.princomp* summary.srcfile summary.srcref
[28] summary.stepfun summary.stl* summary.table
[31] summary.tukeysmooth*

Non-visible functions are asterisked 加星号标注的是不可见的方法,也就是说使用summary.prcomp是不能看到源代码的。
找到这个类函数里面你所关注的函数,输入函数名,回车,就可以查看代码了,如:
> summary.aovlist
function (object, ...)
{
if (!is.null(attr(object, "weights")))
cat("Note: The results below are on the weighted scale\n")
dots <- list(...)
strata <- names(object)
if (strata[1L] == "(Intercept)") {
strata <- strata[-1L]
object <- object[-1L]
}
x <- vector(length = length(strata), mode = "list")
names(x) <- paste("Error:", strata)
for (i in seq_along(strata)) x[[i]] <- do.call("summary",
c(list(object = object[[i]]), dots))
class(x) <- "summary.aovlist"
x
}


对于非类函数使用methods会报出错误:
> methods("sample")
[1] sample.int
Warning message:
In methods("sample") : function 'sample' appears not to be generic
对于具体的函数,要搞懂它,可能看这些信息还不够,需要下载*.tar.gz,查看里面的源代码。这时候linux下的find命令就非常有用,具体可以问问谷哥和度娘。

4. 直接上CRAN 下载源代码包。对于加星号标注的是不可见的方法

流程如下:

1) 登入R主页 http://www.r-project.org/ ,点击 Download 下的CRAN

2) 选择一个镜像

3) 里面的Source Code for all Platforms就可以下载各种源码了,下面以下载程序包源码包为例,点packages

4) 选择sorted的方式,推荐by name

5) 找到你感兴趣的包,比如abind,点进去就可以看见Package source这一项,用tar.gz封装的,download就可以了,解压后就能看见源码了。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP