【问题标题】:How to view internal variables of an R package within an R session?如何在 R 会话中查看 R 包的内部变量?
【发布时间】:2019-07-08 00:31:27
【问题描述】:

如何在 R 会话中查看 R 包的所有隐藏/内部变量?

隐藏/内部变量是指R Packages - External Data 中描述的变量类型,它们将存储在包源代码的“/pkg/R/sysdata.Rda”文件中。

我在下面的尝试。这些都不是完全正确的。我觉得我错过了什么。必须有一个简单的方法来做到这一点,对吧?

下载源代码

当然,我可以下载包源和

load(file.path("pkg","R","sysdata.Rda"))

但这会涉及到我的会话之外的工作,这对我不起作用。

使用 RStudio 的代码完成和:::

在 RStudio R 会话中,我可以做到

> library(pkg)
> pkg:::

RStudio 会自动建议在 ::: 之后包含哪些内容。在这些建议中,它显示了所有内部变量。这是一个不错的 hack。但我想要一些更清洁的东西,它不依赖于 RStudio 的自动建议。

加载.rdx.rdb 文件?

我注意到了

pkg/R/sysdata.rdx
pkg/R/sysdata.rdb

在软件包二进制文件中。我想我可能能够阅读这些以显示所有内部变量。 How to open .rdb file using R 的答案依赖于 lazyLoad。但我无法让这个工作。似乎其他人也不是。

【问题讨论】:

    标签: r package global-variables


    【解决方案1】:

    您可以使用lsasNamespace 获取所有功能(导出和未导出):

    head(ls(envir = asNamespace('data.table')))
    # [1] "-.IDate"        ":="             "[.data.table"   "[.ITime"       
    # [5] "[<-.data.table" "[<-.IDate" 
    

    我不赞成你的后一点,但我认为system.file 有你想要的。 IIRC 与软件包一起安装的其他任何东西都应该在这个位置。

    head(list.files(system.file(package = 'data.table'), recursive = TRUE))
    # [1] "DESCRIPTION" "help"        "html"        "INDEX"       "libs"       
    # [6] "LICENSE"   
    

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 1970-01-01
      • 2019-08-31
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 2015-07-22
      • 2020-08-18
      • 2018-01-23
      相关资源
      最近更新 更多