我下载了一个.tgz文件,其中包含R /中的R脚本和src /中的单个C文件。
R函数以这种方式调用C函数:
Mainfn<-function(x) {
output <- matrix(nrow(x),ncol(x));
output<-.C("myCfn",x=as.double(x),output=as.double(output),
PACKAGE='mypackage')
return(output)
}
在C文件中,函数以这种方式定义[...]
表示一系列很长的计算。
#include <R.h>
#include <Rmath.h>
#include <math.h>
/*----------------------------------------------------------*/
void myCfn(double *x,double *output){
[...]
}
当我使用R CMD INSTALL mypackage.tgz
安装软件包时,Mainfun()
会出错:"myCfn" not available for .C() for package "mypackage"
。我想知道如何让我的函数识别C文件中定义的这个函数?
答案 0 :(得分:5)
我最好的猜测:软件包在useDynLib(<pkg_name>)
文件中需要NAMESPACE
。