3
我下載了一個.tgz文件,其中包含R/R腳本和src /中的一個C文件。使R函數在同一個包中識別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文件中定義的這個函數?
您是否構建了C代碼? .C不會從源代碼加載 - 它將尋找編譯的C代碼。 – josliber
我也會看看'inline'和'Rcpp'包。這些使得R和C/C++很容易結合。 –
@josiber我以爲R CMD INSTALL命令會從源代碼編譯C語言。 – hatmatrix