function是有多个语句组成,完成一个特定的任务。R语言里面有很多内嵌的functions,用户也可以自己定义。比如说sort, summary, help都是R里面常用的function。
我们如何查看一个R 函数function的源代码呢?
在R里面,想查看一个function的源代码,直接输入function的名字,执行就可以。
我们以sort为例子。
> sort
function (x, decreasing = FALSE, ...)
{
if (!is.logical(decreasing) || length(decreasing) != 1L)
stop("'decreasing' must be a length-1 logical vector.\nDid you intend to set 'partial'?")
UseMethod("sort")
}
<bytecode: 0x0000000014d14e48>
<environment: namespace:base>
我们可以看到sort的参数和一些R语句。那这个UseMethod("sort")
又是什么意思?这个告诉我们sort
是一个泛型函数,不同的classes有不同的实现。
我们接着看一下这个泛型函数的所有方法。我们可以看到sort.POSIXlt
内部用的是order函数。
> methods(sort)
[1] sort.bibentry* sort.default sort.POSIXlt
see '?methods' for accessing help and source code
> sort.POSIXlt
function (x, decreasing = FALSE, na.last = NA, ...)
x[order(as.POSIXct(x), na.last = na.last, decreasing = decreasing)]
<bytecode: 0x000000000566f2d8>
<environment: namespace:base>
在函数里面可以看到的<bytecode:>
表示代码是编译过得,可能是C,C++或者fortran代码。