【问题标题】:view source code in R [duplicate]在 R 中查看源代码 [重复]
【发布时间】:2011-03-29 22:51:11
【问题描述】:

如何在 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 包时,它是否也下载源代码?它存储在计算机的什么位置?有人知道吗?

【问题讨论】:

标签: r


【解决方案1】:
  1. 响应Non-visible functions are asterisked,这意味着在ts 或默认对象上分派的实际函数分别位于 tseries 命名空间中但未导出。所以只要输入tseries:::portfolio.optim.default,一旦你指定了包括命名空间在内的完整补丁,你就会看到函数代码。

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

【讨论】:

  • 我无法在包Matrix 中显示函数lu 的源代码。你能看一下吗?
【解决方案2】:

当您不知道函数位于哪个命名空间中时,getAnywhere 函数会很有帮助。

描述在manual,或者函数的help page

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 为什么投反对票?我已经对此进行了测试,它适用于库函数。
    • 在 RStudio 中打开一个漂亮的窗口。 +1 !
    【解决方案4】:

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

    或者,您可以下载您需要的软件包的源代码,解压缩并查找名称有希望的任何文件(这种方法很困难,因为您要查找的函数可能是用 C 编写的!)。这比在二进制文件中查找代码更容易。如果你要走这条路,代码应该在你下载到的压缩文件夹中可用。

    【讨论】:

    • 哇。非常感谢您提供此debug 功能。太棒了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    • 2010-12-21
    相关资源
    最近更新 更多