使R功能在同一个包中识别C功能?

时间:2014-01-12 02:23:09

标签: c r

我下载了一个.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文件中定义的这个函数?

1 个答案:

答案 0 :(得分:5)

我最好的猜测:软件包在useDynLib(<pkg_name>)文件中需要NAMESPACE