我正在学习如何使用" .Call()"从R调用C函数。 我正在按照here给出的例子。
我创建了一个C文件" add.c":
#include <R.h>
#include <Rinternals.h>
SEXP add(SEXP a, SEXP b) {
SEXP result = PROTECT(allocVector(REALSXP, 1));
REAL(result)[0] = asReal(a) + asReal(b);
UNPROTECT(1);
return result;
}
$ R CMD SHLIB add.c
然后我有了:
add.c
add.o
add.so
创建了另一个R文件&#34; Calling_Cf_from_R_wrapper.R&#34;:
# In R ----------------------------------------
add <- function(a, b) {
.Call("add", a, b)
}
在R会话中:
> source("Calling_Cf_from_R_wrapper.R")
> add(1,2)
Error in .Call("add", a, b) : C symbol name "add" not in load table
知道为什么它没有成功吗? 谢谢!