install rcl to ubuntu

rclはRの機能をcommon lispから利用するためのpackage. installは以下でできる.

  1. sudo apt-get install r-base clisp cl-cffi gsl-bin (他にもパッケージが必要なようだが色々いれているので不明).
  2. wget http://common-lisp.net/project/rcl/rcl.tgz
  3. tar zxf rcl.tgz
  4. sudo mv -R rcl /usr/share/common-lisp/source/
  5. cd /usr/share/common-lisp/systems; sudo ln -s ../source/rcl/rcl.asd ./

でinstallできる。


使い方は

(asdf:operate 'asdf:load-op :rcl)
;(require :rcl)
(in-package :rcl)
(r-init)
(let* ((x (loop for i from 0 below 10 collect i))
       (y (loop for i in x collect (* 2 i))))
  (r "plot.default" x y))

これでplotが行われる

以下のエラーは2008.08.04の時点では修正されている

動かしてみると
$clisp
(asdf:operate 'asdf:load-op :rcl)
以下のエラーで止まる

 Compiling file /usr/share/common-lisp/source/rcl/alien-defs.lisp ...
- DEFINE-SYMBOL-MACRO: the symbol :READ-ONLY names a global variable
以下の修正で動くようになる alien-defs.lispの下の方にある
(cffi:defcvar ("R_GlobalEnv" :read-only t) SEXP)
(cffi:defcvar ("R_UnboundValue" :read-only t) SEXP)
(cffi:defcvar ("R_NilValue" :read-only t) SEXP)
;;; seen in RCLG (also the idea of using :read-only)
(cffi:defcvar ("R_InputHandlers" :read-only t) SEXP)
(cffi:defcvar ("R_NamesSymbol" :read-only t) SEXP)
(cffi:defcvar ("R_DimSymbol" :read-only t) SEXP)
を次のように修正すると動く
(cffi:defcvar "R_GlobalEnv"  SEXP :read-only t)
(cffi:defcvar "R_UnboundValue"  SEXP :read-only t)
(cffi:defcvar "R_NilValue"  SEXP :read-only t)
;;; seen in RCLG (also the idea of using :read-only)
(cffi:defcvar "R_InputHandlers"  SEXP :read-only t )
(cffi:defcvar "R_NamesSymbol"  SEXP :read-only t)
(cffi:defcvar "R_DimSymbol"  SEXP :read-only t)