11

我正在学习使用 RStudio 构建自己的包。.tar.gz包(名为SteenSubsSpec)的当前版本在此处。目前,该Build & Reload命令似乎可以成功构建和 Roxygen-ize 包。然而,这些函数似乎没有加载到内存中,尽管事实上Build & Reload成功更新了文档。我究竟做错了什么?

Build & Reload给出以下输出:

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

==> 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

我该如何解决这个问题?

4

1 回答 1

13

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

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

在你的 R 函数文件中,添加一个@export yourfunctionnamein (或者,从技术上讲,一个#' @export yourfunctionname),当你构建和重新加载时,你的 NAMESPACE 文件应该被更新并且你的函数应该不再是不可见的。

于 2013-09-04T18:20:19.500 回答