Я слежу за главой Хэдли о R cpp в Advanced R и не могу понять некоторых последствий использования R cpp для вызова функций C ++ в R.
В частности, почему файлы C ++, включая директивы:
#include <Rcpp.h>
using namespace Rcpp;
, приведут к ошибке Rcpp.h not found
, если эти файлы скомпилированы с помощью g ++, как обычно, без участия R.
Является R cpp .h предназначен для вызова только из R, например, используя sourceCpp
? Обратите внимание, что я хотел бы сохранить тот же самый файл C ++ для программ только на C ++, а также для пакета R, использующего R cpp, но предыдущая ошибка заставляет меня задаться вопросом, возможно ли это. Я что-то упустил?
Спасибо
Приложение
Это пример файла C ++ из книги. Он отлично работает при запуске Rcpp::sourceCpp("example.cpp")
, но приведет к вышеупомянутой ошибке компиляции, если g++ -o example example.cpp
используется с терминала (добавление main
не исправляет этого). Версия g ++ - 10.1.0.
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
double meanC(NumericVector x) {
int n = x.size();
double total = 0;
for(int i = 0; i < n; ++i) {
total += x[i];
}
return total / n;
}
/*** R
library(microbenchmark)
x <- runif(1e5)
microbenchmark(
mean(x),
meanC(x)
)
*/