使用Rcpp在包中生成.rd文件

时间:2015-05-20 20:27:55

标签: r rstudio rcpp

我使用Rcpp命令创建了一个包含Rcpp.package.skeleton()代码的测试包。生成了根据插图的所有必需文件,我能够编译包。

我尝试将roxygen2样式注释添加到示例代码

#include <Rcpp.h>
using namespace Rcpp;

//' @param none required
//' @return List of functions
// [[Rcpp::export]]
List rcpp_hello_world() {

    CharacterVector x = CharacterVector::create( "foo", "bar" )  ;
    NumericVector y   = NumericVector::create( 0.0, 1.0 ) ;
    List z            = List::create( x, y ) ;

    return z ;
}

我看到新的R/RcppExports.R显示了修改

#' @param none required
#' @return List of functions
rcpp_hello_world <- function() {
    .Call('TestPackageRcpp_rcpp_hello_world', PACKAGE = 'TestPackageRcpp')
}

但这些更改未转移到rcpp_hello_world.Rd文件,而?rcpp_hello_world()仍然提供

rcpp_hello_world {TestPackageRcpp}  R Documentation
Simple function using Rcpp

Description

Simple function using Rcpp

Usage

rcpp_hello_world()  
Examples

## Not run: 
rcpp_hello_world()

## End(Not run)

同样,我创建了另一个文件timesTwo.cpp文件并添加了

//' @param - a numeric vector
//' @return - a numeric vector

timesTwo.cpp文件。我在R/RcppExports.R文件中看到了修改

#' @param numeric vector
#' @return numeric vector
timesTwo <- function(x) {
    .Call('TestPackageRcpp_timesTwo', PACKAGE = 'TestPackageRcpp', x)
}

但没有创建新的/man/timesTwo.Rd文件。

我在创建新文件后运行Rcpp::compileAttributes()并运行Build并重新加载包。

我是否以错误的方式创建新文件?这不是一个大问题,我可以手动编写timesTwo.Rd,但如果功能已经可用,我希望能够在timesTwo.cpp中编写注释。我正在使用

platform       x86_64-apple-darwin13.1.0   
arch           x86_64                      
os             darwin13.1.0                
system         x86_64, darwin13.1.0        
status                                     
major          3                           
minor          1.0                         
year           2014                        
month          04                          
day            10                          
svn rev        65387                       
language       R                           
version.string R version 3.1.0 (2014-04-10)
nickname       Spring Dance 

Rcpp版本0.11.6RStudio版本0.99.441

1 个答案:

答案 0 :(得分:1)

据我所知如果你使用RStudio所有这一切都是为你完成的 - 因为RStudio非常支持tboth roxygen2,当然还有Rcpp。您可能必须确保单击RStudio Tools配置中的框以使用roxygen。

我仍然手工完成,或者更确切地说,shell脚本。可悲的是,我们(目前至少)在R CMD build步骤中没有“钩子”来自动执行此操作。

因此,当我更新.cpp源文件时,我通常会调用脚本compAttr.r来调用Rcpp中的compileAttributes()函数。我将把.cpp的roxygen标记带到.R文件。

然后我调用脚本roxy.r从.R文件生成(或更新).Rd文件。根据我的选择,这只会更新.Rd文件并单独留下DESCRIPTIONNAMESPACE

这两个脚本都是littler的一部分,我确保它们在$PATH上。