在开发包时,如何在依赖时以交互方式探索我的功能

时间:2015-06-26 23:06:41

标签: r import package

在以下示例中,我的包从read.dta包导入foreign并在函数中使用它。为了检查我的函数的工作情况,我喜欢逐行手动逐行(即突出显示每一行并运行,而不是使用调试器)。但是,在执行此操作时,read.dta实际上并未导入且无法使用(即使在Build& Reload之后)。

#' @importFrom foreign read.dta

DDGet <- function(url = 'http://uofi.box.com/file.dta') {
  # Download underlying Polity IV data
  tmpfile <- tempfile()
  download.file(url, tmpfile, method = "wget")
  DDData <- read.dta(tmpfile, to.data.frame = TRUE)
}

那么,如何在交互式开发过程中使所有依赖项都可用?

或者这可能不是正确的工作流程?我来自一个交互式分析背景,我习惯逐行逐步浏览我的代码。是一个如何开发包的功能?

1 个答案:

答案 0 :(得分:2)

在编写软件包的功能或任何外部使用时,我高度建议使用::运算符。调用该函数时,此运算符可用于直接引用包的命名空间。 这对于编程很有用,可以避免与不同包中相同或类似命名的函数混淆。

在您的情况下,::还有另一个优势: 无论何时调用函数,都会自动加载相关包。 这对于检查代码非常有用,因为您不必提前附加包,并且该功能将按照&#34;&#34; (如果安装了软件包,应该是导入软件包的情况。)

在此处查找有关该主题的更多信息: http://r-pkgs.had.co.nz/namespace.html

在您的情况下,您可能会改变您的代码:

DDGet <- function(url = 'http://uofi.box.com/file.dta') {
  tmpfile <- tempfile()
  download.file(url, tmpfile, method = "wget")
  DDData <- foreign::read.dta(tmpfile, to.data.frame = TRUE)
}

如果这对您的问题有帮助,请告诉我。