Rcpp:为什么我不能在我定义的包中运行该函数?

时间:2013-05-16 07:12:56

标签: r rcpp

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

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”对于包“newpackage”

的.Call()不可用

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

1 个答案:

答案 0 :(得分: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 modulesRcpp attributes

之后,事情应该按照您所需的compileAttributes进行。

编辑:它更简单。只需按照我上面列出的Rcpp.package.skeleton()电话进行操作,即添加attributes=TRUE ,然后再完成 - 安装软件包并进行测试。