查看R中的源代码

时间:2010-08-14 21:41:23

标签: r

如何在R中查看源代码?例如,对于函数portfolio.optim

> require(tseries)
> portfolio.optim
function (x, ...) 
UseMethod("portfolio.optim")
<environment: namespace:tseries>

> methods(portfolio.optim)
[1] portfolio.optim.default* portfolio.optim.ts*     

Non-visible functions are asterisked
> portfolio.optim.ts
Error: object 'portfolio.optim.ts' not found
> portfolio.optim.default
Error: object 'portfolio.optim.default' not found

当我在本地安装R软件包时,它是否也下载了源代码?它存放在计算机上的哪个位置?有谁知道吗?

4 个答案:

答案 0 :(得分:32)

  1. 响应Non-visible functions are asterisked,这意味着分别在ts或默认对象上分派的实际函数位于tseries命名空间中,但未导出。所以只需键入tseries:::portfolio.optim.default,就可以在指定包含命名空间的完整补丁后看到功能代码。

  2. R下载源代码还是二进制代码取决于您的操作系统。在任何一种情况下,都是tseries package is available的来源。阅读由经验丰富的程序员编写的源代码是一种很好的学习方法。

答案 1 :(得分:22)

当您不知道哪个命名空间是函数时,getAnywhere函数会很有用。

manual或功能help page中描述。

答案 2 :(得分:16)

您可以对大多数功能执行的操作是在R中的命令窗口中输入edit( functionname )。在此处使用名称填写 functionname

因此,您可以获得该函数的源代码。但是,我尝试了它的功能portfolio.optim,所以它不起作用。可能仅适用于标准功能。

答案 3 :(得分:6)

如果您要查看的内容是特定方法的来源,您可以选择几种方法。 一种是使用 debug(portfolio.optim)。然后当你在一个对象上运行该函数时,它应该逐步完成该方法,随着它打印出代码。使用'n'让它逐步完成,并且在完成后不要忘记使用 undebug(portfolio.optim)

或者,您可以下载所需软件包的源代码,解压缩并查找具有良好名称的任何文件(这种方法很难,因为您要查找的函数可能用C语言编写!)。这比在二进制文件中查找代码更容易。如果您要使用此路线,则无论您下载到何处,代码都应该位于压缩文件夹中。