小编use*_*983的帖子

带有 C++ 的 R 包(没有 Rcpp)

我正在尝试使用 C++ 构建一个 R 包,而不使用 Rcpp(我知道 Rcpp 工作得很好)。我已经阅读了几个 R 包教程并简要阅读了编写 R 扩展。下面的示例 1) 正在工作,但示例 2) 使 R 崩溃。我想知道为什么会发生这种情况(是否有任何先决步骤可以为 R 等编写函数?)。

示例 1

.cpp文件中

extern "C" {

  SEXP add(SEXP a, SEXP b) {

    SEXP result = PROTECT(allocVector(REALSXP, 1));

    REAL(result)[0] = asReal(a) + asReal(b);

    UNPROTECT(1);

    return result;

  }

}
Run Code Online (Sandbox Code Playgroud)

调用 R:

.Call("add", 3.0, 2.0).
Run Code Online (Sandbox Code Playgroud)

这个例子有效。

示例 2

.cpp文件中:

extern "C" {

  void RHello() {

    Rprintf("Hello.\n");

    R_FlushConsole();
    R_ProcessEvents();

  }

}
Run Code Online (Sandbox Code Playgroud)

调用 R:

.Call("RHello"). 
Run Code Online (Sandbox Code Playgroud)

这会导致 R 崩溃。

c++ r package

5
推荐指数
1
解决办法
280
查看次数

标签 统计

c++ ×1

package ×1

r ×1