我使用以下步骤来实现我自己的包:
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,但我仍然无法弄清楚会发生什么。 你可以帮帮我吗?我上面的步骤有什么问题?感谢。
答案 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 modules
和Rcpp attributes
。
之后,事情应该按照您所需的compileAttributes
进行。
编辑:它更简单。只需按照我上面列出的Rcpp.package.skeleton()
电话进行操作,即添加attributes=TRUE
,然后再完成 - 安装软件包并进行测试。