Rからxlispstatを呼び出すRXLispのセットアップ方法
Posted by 0093 in Tech Memo on 2007/09/04
少々…というか正攻法でいくとかなり面倒くさかったのでメモ
#参考URL:
1.R Special Interest Group on Macintosh Development and Porting, both for MacOS 8.6 - 9.x and MacOS X : RXLisp
2.The RXLisp package
#注意
もしかしたらxlispstatがインストール済みじゃないと動かないかもしれないので,まだインストールしていない人は,別の記事に書いてある「MacOSXにxlispstatをインストールする」を参考にしてインストールした後で,コッチの作業をやってもらえると安心かも
---------------------------------
##セットアップ方法
#1 RXLispをセットアップする.
正攻法でセットアップしてみようとしたけど,色々とエラーが出るのでギブアップ.
参考URL1.にあるシェルスクリプトを実行したところ上手くいったので,こちらの方法をとった方が正解かも.
ただそのシェルスクリプトは,幾つか妙なところで改行が加わってしまっているので(恐らくメーリングリストの内容だから,強制改行が加わっているのかも),そこを修正する必要有り.
いちおう修正済みのやつを作っておいたので,それをダウンロードして実行すればセットアップできるはず.
修正済みシェルスクリプトファイル setup_rxlisp.sh
上のシェルスクリプトファイルをダウンロードしたら以下のコマンドを実行.
cd /hoge(シェルスクリプトファイルをダウンロードしたディレクトリ)
sudo sh setup_xlisp_rxlisp.sh
#2 ファイルの修正
#1で基本的なセットアップは終わっているけど,R内でLibraryをロードしてサンプルコマンドを実行しようとすると,
; loading "/Library/Frameworks/R.framework/Versions/2.5/Resources/library/RXLisp/xlisp/ObjectManager.lsp"
error: unbound function - DEF
error: can't load file - "/Library/Frameworks/R.framework/Versions/2.5/Resources/library/RXLisp/xlisp/ObjectManager.lsp"
というエラーが出る.
どうやら
/Library/Frameworks/R.framework/Versions/2.5/Resources/library/RXLisp/xlisp/ObjectManager.lsp
というファイルが悪さをしているようなので,それを修正してみる.
エラーメッセージに
error: unbound function - DEF
と書いてあるので,恐らくはdefunと書くべき所をdefと書いてしまっているのだろう.
でもxlispstatはdefでも出来たはずなんだけど…おかしいなぁ.
違和感を感じつつObjectManager.lspのファイルを覗いてみると,
(def ReferenceManager (createReferenceManager))
という記述を発見.
そこで
(defun ReferenceManager (createReferenceManager))
という風に修正して,もう一度ロードをしてみると上手くいく.
---------------------------------
コレでR上でxlispstatが呼び出せるようになった.
実際にサンプルを動かしてみたけど,上手くいっているようなので安心.
##追記(重要)
上記の方法を使うだけだと,幾つかのコマンド("histogram"とか)が実行できないという問題が発生してしまう.
どうやらxlispstatの基礎的なコマンドを読み込んでくれていないらしい.
ココを参考に変えてみる.
まず,xlispstatのxlisp.wksを/Library/Frameworks/R.framework/Resources/library/RXLisp/xlisp/以下にコピーする.
cp /usr/local/lib/xlispstat/xlisp.wks /Library/Frameworks/R.framework/Resources/library/RXLisp/xlisp/
これが終わったらR上でLibraryをロードして,以下のコマンドを実行する.
library(RXLisp)
.XLispInit(c("xlisp",paste("-w",system.file("xlisp","xlisp.wks",package="RXLisp"),sep='')))
これでエラーメッセージも返してこないし,"histogram"とかのコマンドも使えるようになった.
ちなみにいちいち上のコマンドでやるのが面倒くさい場合は
.XLispInitArgs = c("xlisp",paste("-w",system.file("xlisp","xlisp.wks",package="RXLisp"),sep=''))
で従来通りの.XLispInit()コマンドで作業できるようになる見たい.
とりあえずこれでRXLispはきちんと動くようになった模様.
めでたしめでたし.
This entry was posted on 2007/09/04 at 23:07 and is filed under Tech Memo . You can follow any responses to this entry through the RSS 2.0 . You can leave a response .
- No comments yet.