For example, consider the task of computing some function given two vectors
a and b of size n. The C code to compute the result appears below
(fooC.c); note the presence of the pre-processor directive include <R.h>.
You may execute code from fooC.R after running the command R CMD SHLIB fooC.c; the runnable example below runs that command for you:
1
2
3
4
5
6
7
8
9
10
11
12
#include <R.h>
#include <math.h>
void fooC(double* a, double* b, int* n, double* result) {
int i, j;
for (i = 0; i < (*n); i++) {
result[i] = 0;
for (j = 0; j < (*n); j++)
result[i] += pow(a[j] + i + 1, b[j]);
}
}
Enter to Rename, Shift+Enter to Preview
1
dyn.load("chapter7/fooC.so") # load the compiled C code