类似于R的C概率库

标签 c r statistics

有谁知道有一些标准概率函数的 C 库,例如 R 的示例函数?我发现了这个:

http://www.gnu.org/software/gsl/

我想知道是否有人对此有任何经验(它的效率如何)以及是否还有其他经验。谢谢。

最佳答案

您始终可以将 R 本身嵌入到您的 C 应用程序中。这是可行的,并且有记录,但有点乏味,因为 API 非常简单。

如果您对 C++ 持开放态度,由于 RInside,它会变得容易得多.如果您可以在 R 中执行此操作:

R> set.seed(123); sample(LETTERS[1:5], 10, replace=TRUE)
 [1] "B" "D" "C" "E" "E" "A" "C" "E" "C" "C"
R> 

多亏了RInside,你可以很容易地在C++中做同样的事情:

edd@max:~/svn/rinside/pkg/inst/examples/standard$ cat rinside_sample12.cpp
// Simple example motivated by StackOverflow question on using sample() from C
//
// Copyright (C) 2012  Dirk Eddelbuettel and Romain Francois

#include <RInside.h>                    // for the embedded R via RInside

int main(int argc, char *argv[]) {

  RInside R(argc, argv);                // create an embedded R instance

  std::string cmd = "set.seed(123); sample(LETTERS[1:5], 10, replace=TRUE)";

  Rcpp::CharacterVector res = R.parseEval(cmd);   // parse, eval + return result 

  for (int i=0; i<res.size(); i++) {
    std::cout << res[i] << " ";
  }
  std::cout << std::endl;

  exit(0);
}

edd@max:~/svn/rinside/pkg/inst/examples/standard$ 

并且鉴于它运行具有相同 RNG 种子的相同代码,它也返回相同的结果:

edd@max:~/svn/rinside/pkg/inst/examples/standard$ ./rinside_sample12
B D C E E A C E C C 
edd@max:~/svn/rinside/pkg/inst/examples/standard$ 

如果您只是将我上面显示的代码放入现有 RInside 安装的目录 examples/standard 中并说 make,将生成可执行文件并给出相同的basename 作为您的源文件(此处为 rinside_sample12 来自 rinside_sample12.cpp)。

关于类似于R的C概率库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066362/

相关文章:

R:Bookdown:每个 Markdown 文件一章 (Rmd)

c++ - Armadillo 'cor' 函数返回标量

python - 使用 Python scipy 验证 t 检验结果

c - 静态变量与单例结构

C 函数到宏

c - 为什么不打印字符串?

C SHA1 哈希不起作用

r - 与密度曲线叠加直方图

从plotreg()输出中删除框架并旋转标题

python - 如何在 constrOptim() 中设置多个起始值