R中查看函数源代码

421 篇文章 15 订阅
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就可以了,解压后就能看见源码了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值