- RとCの連携の基本は、
Windows上でのRとCの連携
http://d.hatena.ne.jp/arupaka-_-arupaka/20131020/1382252302 を参考に。
- 具体的な手順
(1)まず、準備。mingwを利用して、cygwin上でcygwinに依存しないgslを作る。
(Rはcygwinのライブラリを参照できないので、windowsのdllを利用する必要がある)
http://d.hatena.ne.jp/arupaka-_-arupaka/20131022/1382412374
(2)C言語のソースを用意.
http://d.hatena.ne.jp/arupaka-_-arupaka/20131020/1382252302 を参考に。
に、void型、値の受け渡しは、すべてポイント型。
例)平均mu 標準偏差sigma の正規分布の乱数をnumber個発生する。
gsl_test2.c
#include <stdio.h> #include <gsl/gsl_rng.h> #include <gsl/gsl_randist.h> void c_rnorm(int* number,double* mean,double* sigma,double* out){ const gsl_rng_type *T; int i; gsl_rng *r; double v; T = gsl_rng_default; r = gsl_rng_alloc(T); gsl_rng_set(r,2); for(i=0;i<*number;i++){ out[i]=gsl_ran_gaussian(r,*sigma)+*mean; } }
(2)コンパイル
>|sh|
x86_64-w64-mingw32-gcc gsl_test2.c -I/cygdrive/c/gsl/include -L/cygdrive/c/gsl/lib -lgsl -o gsl_test2.o -c
|