我想为我的 nmath.h
代码(在 C
包中)包含标题 R
以查找 R_FINITE
和 ML_ERR_return_NAN
。我发现不能直接包含 nmath.h
。为了找到 R_FINITE
,我可以包含 R_ext/libextern.h
。但我不知道要包含什么以便找到 ML_ERR_return_NAN
。有任何想法吗?我发现 here 是 Brian Ripley 教授提到的“编写 R 扩展”,但我找不到在那里解决的 nmath.h
(具体在哪里?)
最佳答案
在 Debian 或 Ubuntu 上:
sudo apt-get install r-mathlib
之后,您可以构建如下测试程序:
// -*- mode: C++; c-indent-level: 4; c-basic-offset: 4;
// compile-command: "gcc -s -Wall -O3 \
// -I/usr/share/R/include -o rmath_rnorm \
// rmath_rnorm.c -lRmath -lm" -*-
// Compare to
// $ Rscript -e "RNGkind('Marsaglia'); \
// .Random.seed[2:3] <- c(123L, 456L); rnorm(2)"
// [1] -0.2934974 -0.3343770
#include <stdio.h>
#define MATHLIB_STANDALONE 1
#include <Rmath.h>
int main(void) {
set_seed(123, 456);
printf("rnorm: %f %f\n", rnorm(0.0, 1.0), rnorm(0.0, 1.0));
return 0;
}
注意:前四行应该是你安全的文件中的一行,然后
M-x compile
为你构建程序。 Rscript
调用同上:一行。编辑: Drats。回答了错误的问题 :)
nmath.h
似乎不是从 src/nmath/nmath.h
导出的,但是这个 R Mathlibrary 是由 R Core 导出供其他人使用的。 nmath.h
文件所在的位置/* Private header file for use during compilation of Mathlib */
#ifndef MATHLIB_PRIVATE_H
#define MATHLIB_PRIVATE_H
所以你不应该依赖它。
关于r - 如何包含 nmath.h?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29083420/