我使用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.6
和RStudio
版本0.99.441
答案 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文件并单独留下DESCRIPTION
和NAMESPACE
。
这两个脚本都是littler的一部分,我确保它们在$PATH
上。