Rプログラムから呼び出したい関数「foo」をCで作成しました。この関数は行列を入力として受け取り、それに対していくつかの操作を行います (たとえば、各要素に 1 を追加します)。単一のベクトルにするのは簡単ですが、
.C("foo", n=as.integer(5), x=as.double(rnorm(5)))
foo を次のように実装
void foo(int *nin, double *x)
{
int n = nin[0];
int i;
for (i=0; i<n; i++)
x[i] = x[i] * x[i];
}
2 次元配列を渡すにはどうすればよいですか? 「double *x」を「double **x」に変更すると、セグメンテーション違反が発生します。任意のポインタをいただければ幸いです。