1

好的,所以我创建了一个带有 function的 R 包fooRcpp.package.skeleton。我还编译了 Hello World C++ 文件

R CMD SHLIB foo/src/rcpp_hello_world.cpp

但是,当我打电话时,rcpp_hello_world我得到一个错误:

> source("foo/R/rcpp_hello_world.R")
> rcpp_hello_world()
Error in .Call("rcpp_hello_world", PACKAGE = "foo") : 
  "rcpp_hello_world" not available for .Call() for package "foo"

有什么线索吗?

4

2 回答 2

6

“包骨架”意味着您应该遵循创建(简单,骨架)包(可选)构建包(到 tar.gz)以及安装它。

安装后,您可以加载它,然后您实际上可以执行新功能。

或者,您可以通过 Rcpp Attributes 和/或内联包即时工作。

于 2013-04-19T16:59:35.977 回答
1

要运行“hello world”示例,请执行以下操作:

  1. 启动 R 并通过以下方式安装 Rcpp 包:

    install.packages('Rcpp')

  2. 在 R 中生成 Rcpp 模板:

    rcpp.package.skeleton("mypackage")

  3. 接下来,为包创建一个存档:

    R CMD 构建 mypackage

  4. 退出 R。您应该会看到生成的文件夹“mypackage”。键入以下内容以检查包:

    R CMD 检查 mypackage

  5. 现在,您将看到一个存档mypackage_1.0.tar.gz。安装它:

    R CMD 安装 mypackage_1.0.tar.gz

  6. 让我们在 R 中运行包。启动 R 并执行以下操作:

    库('我的包')

    rcpp_hello_world() # 试试模板中生成的C++函数

    [[1]] [1] “富” “酒吧”

    [[2]] [1] 0 1

于 2016-02-21T07:39:19.267 回答