6

我使用以下步骤来实现我自己的包:

1)我尝试编写一个非常简单的函数如下:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]
int foo() {
return 6;
}

2)我用骨架把它做成一个包:

Rcpp.package.skeleton("newpackage",example_code=FALSE,cpp_files=c("New.cpp"))

3)我用命令运行cpp:

source("~/newpackage/src/New.cpp")

4)运行compileAttributes加载包:

 compileAttributes(pkgdir="/home/tw72/newpackage",verbose = getOption("verbose"))

在此之后,我想在 R 中调用该函数:

foo <- function( )
{
.Call("foo",PACKAGE="newpackage")
}

那么错误是:

Error in .Call("foo", PACKAGE = "newpackage") :

“foo”不适用于 .Call() 包“newpackage”

我遇到了同样的问题,但我仍然无法弄清楚会发生什么。你可以帮帮我吗?我的上述步骤有什么问题?谢谢。

4

1 回答 1

1

从我的头顶看,它看起来很完整,但请尝试

R> Rcpp.package.skeleton("newpackage",
+                        example_code=FALSE,      ## useful but not required
+                        cpp_files=c("New.cpp"),  ## may not be required 
+                        attributes=TRUE)         ## this is important
R>

两者都Rcpp modules需要Rcpp attributes打开。

之后,事情应该会按照您的要求进行compileAttributes

编辑:它更简单。只需执行Rcpp.package.skeleton()我上面概述的调用,即完成后添加attributes=TRUE的调用- 安装包并对其进行测试。

于 2013-05-16T11:58:28.880 回答