Я загрузил файл .tgz, который содержит R-скрипты в R/и один файл C в src /.Функция 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