windows上でのRとCの連携2。 RからC言語のgslのライブラリを関数(プログラム)を使用する。 cygwin環境編。

  • 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
|