【问题标题】:Make third party library available in my R package [duplicate]在我的 R 包中提供第三方库 [重复]
【发布时间】:2014-03-26 01:12:59
【问题描述】:

我正在开发一个使用第三方函数的 R 包 可在 Bioconductor 包“methyilumi”中获得

在一开始我的 R 包的代码中,我导入了methylumi library(methylumi)

在开发过程中(我使用 roxygen2 和 devtools)一切正常。 但是,当我安装包并运行我的功能时,我收到错误: could not find function "methylumIDAT".

如果我手动导入包当然一切都解决了,但是我该怎么做 这样methylumi 在我加载自己的包时可用?

【问题讨论】:

  • “在我的包的代码中......库(甲基umi)”是什么意思?您的NAMESPACE 文件中有正确的导入吗?你读过R-exts 教程文件吗?
  • 嗨,Carl,我确实阅读了 R-exts 教程,但我不得不承认并非所有内容对我来说都一清二楚。假设我在 R 文件夹中有我的主文件“mypackage.r”,我所做的是在文件顶部添加 library(methylumi)。我使用 roxygen2 生成 NAMESPACE(但没有用于 methyulimi 的行),也在我的说明文件中添加了一个 Depends 语句用于methylumi。
  • 我也不是NAMESPACE 方面的专家,但请查看Rmpfr 包的文件以获取一些示例代码。 HTH :-)
  • 你需要在“mypackage.R”中添加一个@import指令(你不需要library)。 roxygen2 将为您设置命名空间。您仍然需要在说明中添加导入条目。请参阅此 SO question。此外,请考虑使用 import 而不是依赖,因为 import 只会根据此 other SO Q/A 使包在您的包中可用。
  • 嗨布罗迪,谢谢这确实有效!

标签: r package devtools roxygen2


【解决方案1】:

由于使用的是devtools,所以可以添加

devtools::use_package("methyilumi")

在控制台中,并在函数体中调用methyilumi::methylumIDAT。这样,包会自动列在DESCRIPTION 文件中的Imports 中。

本节提供了几种不同情况的说明: http://r-pkgs.had.co.nz/namespace.html#imports

【讨论】:

    【解决方案2】:

    这是通过 NAMESPACE 文件完成的,并且在DESCRIPTION 文件中也有说明。有几种方法可以在 NAMESPACE 中导入函数,但最简单的是 importFrom("[PACKAGE_NAME]",[FUNCTION_NAME)。然后,在DESCRIPTION中,将包名添加到imports中。

    请参阅 Friedrich Leisch 的这个非常好的教程。

    http://cran.r-project.org/doc/contrib/Leisch-CreatingPackages.pdf

    【讨论】:

      猜你喜欢
      • 2013-05-13
      • 1970-01-01
      • 2017-06-27
      • 2017-04-17
      • 1970-01-01
      • 2016-08-03
      • 1970-01-01
      • 2019-08-05
      • 2010-11-19
      相关资源
      最近更新 更多