函数未从自制软件包加载

时间:2013-09-04 17:55:40

标签: r rstudio

我正在学习使用RStudio构建自己的包。包的当前.tar.gz(名为SteenSubsSpec)是here。目前Build & Reload命令似乎构建&成功地对包装进行氧气处理。但是,尽管Build & Reload成功更新了文档,但这些函数似乎并未加载到内存中。我做错了什么?

Build & Reload给出以下输出:

==> roxygenize('.', roclets=c('rd'))
  • 检查更改... DONE

==> R CMD构建SteenSubsSpec

* checking for file ‘SteenSubsSpec/DESCRIPTION’ ... OK
* preparing ‘SteenSubsSpec’:
* checking DESCRIPTION meta-information ... OK
* excluding invalid files
Subdirectory 'R' contains invalid file names:
  ‘2013_08_30_report-concordance.tex’ ‘2013_08_30_report.Rnw’
  ‘2013_08_30_report.log’ ‘2013_08_30_report.pdf’
  ‘2013_08_30_report.synctex.gz’ ‘2013_08_30_report.tex’
* checking for LF line-endings in source and make files
* checking for empty or unneeded directories
Removed empty directory ‘SteenSubsSpec/inst’
* building ‘SteenSubsSpec_1.0.tar.gz’

Source package written to ~/Dropbox/[my directory]

这会更新文档:?write_paper()按预期显示当前文档。然而

require(SteenSubsSpec) 
write_paper() 

给出Error: could not find function "write_paper"

有些事情似乎是正确的:

  • 所有功能文件都在R目录中,并且与其定义具有相同的名称(例如/R/write_paper.R定义write_paper() <- function {...
  • DESCRIPTION文件包含所有相关功能文件的名称:Collate: ... 'write_paper.R

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:10)

最有可能的是,这些函数不会导出到NAMESPACE文件(您声明当前为空)。

在RStudio中,在“项目选项”中的“构建工具”下,确保选中“使用roxygen生成文档”。然后,单击“配置”。确保还检查“使用roxygen生成NAMESPACE文件”。

在您的R函数文件中,在其中添加@export yourfunctionname(或者,在技术上,添加#' @export yourfunctionname),在构建和重新加载时,应更新NAMESPACE文件并且不再需要您的函数是看不见的。