查看R中的源代码

use*_*215 28 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
Run Code Online (Sandbox Code Playgroud)

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

Dir*_*tel 32

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

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


Mar*_*rek 22

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

手册中或在功能的帮助页面上描述.


use*_*309 16

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

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


Liz*_*der 6

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

或者,您可以下载所需软件包的源代码,解压缩并查找具有良好名称的任何文件(这种方法很难,因为您正在寻找的函数可能用C语言编写!).这比在二进制文件中查找代码更容易.如果您要使用此路由,则只需在下载到的任何位置的压缩文件夹中提供代码即可.