RにCのプログラムを取り込む

RにCのプログラムを取り込む方法についてのメモ

##RにCのプログラムを取り込む方法
とりあえず以下のプログラムを取り込んでみる
foo.c

プログラムがあるディレクトリへ移動して
R CMD SHLIB foo.c
と入力する.そうするとfoo.soというファイルが出来るので,これをRから参照することになる.

GUIのRを起動して
>dyn.load("hogehoge/foo.so")
>out <- .C("foo",as.integer(5), as.double(1:5), as.double(0))
と入力し,outを表示させると
>out
[[1]]
[1] 5

[[2]]
[1] 1 2 3 4 5

[[3]]
[1] 1 5
と出る.

リスト形式で戻るので,必要に応じて変更しよう
listsum <- function(x){
    n <- length(x)
    .C("foo",as.integer(n), as.double(x), as.double(0))[[3]]
}
とすると
>listsum(c(1,3,10))
[1] 14
と出る.