如何在R包中加载依赖项?

时间:2017-09-18 23:01:44

标签: r package cran

我正在开发一个R包,可在DESCRIPTIONS文件

中找到
Imports: 
    dplyr,
    ggplot2,
    ncdf4

我有一个示例函数,我使用第三个依赖

testFun <- function(file, lat, long){
  ncfname <- file.path(file,fsep = .Platform$file.sep)
  xfile <- nc_open(ncfname) #Opens the NetCDF file
  lat <- ncvar_get(xfile, 'lat') #Extracts all latitudes

  ...Calculations

  return(XYZ)
}

当我Build and Reload包时,我运行该功能时,could not find function "nc_open"

但是,当我用ncdf4::nc_open

替换它时,它会起作用

我应该在packagename::前加上我在代码中使用的每个依赖项吗?或者我错过了什么?

通常,我希望从DESCRIPTIONS安装所有依赖项,并且可以使用它的函数,而不需要每次都使用包前缀。

2 个答案:

答案 0 :(得分:3)

或者:

  • 使用来自ncdf4::nc_open(...)
  • 的包明确地为函数添加前缀

或者:

  • 在您的NAMESPACE文件importFrom(ncdf4, nc_open)中添加一行,然后在您的代码中调用不带包的函数:nc_open(...)

您可以使用importFrom来搜索该软件包中的所有内容,而不是为要导入的每个函数添加import(ncdf4)行。

答案 1 :(得分:0)

最简单的方法和最正确的方法是直接从包中取出您的功能,而无需打开任何可能会消除某人当前环境的包裹。

试试这个:

xfile <- ncdf4::nc_open(ncfname)

它应该无冲突地访问您需要的内容。这是当前首选的方法,因为它留下了为用户找到的东西。它还使人们很容易知道他们去探索时会发生什么。