• 締切済み

RのBRugsの使い方について

RでMCMC法を実行したいのですが、以下のようになってしまいます。 > library(BRugs) 要求されたパッケージ coda をロード中です 要求されたパッケージ lattice をロード中です Welcome to BRugs running on OpenBUGS version 3.0.2 ここまでは正常だと思うのですが、次のモデルチェックで以下のようなエラーがでてしまいます;; > modelCheck("model.txt") 以下にエラー file(con, "r") : コネクションを開くことができません 追加情報: Warning message: In file(con, "r") : ファイル 'C:\DOCUME~1\ ~1\LOCALS~1\Temp\RtmpscEDb6/buffer.txt' を開くことができません, 理由は 'No such file or directory' です model.txtはC:\workというフォルダに保存してあります。 Rのファイルから作業ディレクトリの変更でC:\workに変更してあるのですが、上のようなエラーメッセージが出てしまいます。 何か間違っている点がありましたら教えていただけないでしょうか?

みんなの回答

  • backs
  • ベストアンサー率50% (410/818)
回答No.2

実際に私も試してみようとパッケージをインストールしてみようとしたら、そもそもインストールが正常にできませんでしたね(^_^;) [R BRugs]というキーワードでgoogleしても最近のページがあまり出てこない模様。。。 私はBRugsというパッケージの内容が良く分からないので、英語のページを見てもよく分かりませんでした(口を出しておいて申し訳ありませんが、がんばって読む気にはなれません)。http://www.biostat.umn.edu/~brad/software/BRugs/BRugs_install.htmlにあるhelp fileも見れませんし、http://d.hatena.ne.jp/lindley/20060922はもうご覧になられたのでしょうしね。 ただ、パッケージの内容を見る限りではseedsmodel.txtとbuffer.txtは同じディレクトリに存在していないとダメなのでは? > setwd(system.file("OpenBUGS", "Examples", package = "BRugs")) > getwd() [1] "C:/PROGRA~1/R/R-27~1.1/library/BRugs/OpenBUGS/Examples" Exampleの中にseedsmodel.txtはあっても、buffer.txtが見当たらないというエラーメッセージでしょう? > model.txtはC:\workというフォルダに保存してあります。 と質問に書いてありますが、プログラムを実行するために必要なファイルが色々と散らばっているのでうまく動いてくれないのではないかと思えるのですが、、、 現在の作業ディレクトリがExampleになっているのに、model.txtがC://workにあるというのもおかしいでしょう。

naturalboy
質問者

お礼

返信ありがとうございます。大変参考になりました。それに、わざわざ試していただいて本当に感謝しています。 backsさんのご指摘いただいた通り私も同様にパッケージのインストールが正常に行われていないようです。そして作業ディレクトリがバラバラになってしまったと思われます。 と言うのも、質問文のエラーメッセージの開くことができないbuffer.txtの内容がmodel is syntactically correctでした。 buffer.txtの保存されているフォルダが本来あるべきはずである場所のRのlibraryのBRugsのOpenBUGSのフォルダとは別にありました。R初心者なので、このようなことが有り得るのかはわかりませんが考えられる原因としたらこれかもわかりません。 更に、http://d.hatena.ne.jp/lindley/20060922の説明の文は引用しますと 引用ここから WinBUGS + R2WinBUGSではlog.odcに保存される「model is syntactically correct」のメッセージが、直接RGuiのコンソールに表示されます.OpenBUGSは起動していませんが、RとOpenBUGSとの間でやりとりが行われたことがこれで分かります.modelCheck()関数のソースを読むと command <- paste("BugsEmbed.SetFilePath(", sQuote(fileName), ");BugsEmbed.ParseGuard;BugsEmbed.Parse", sep = "") .C("CmdInterpreter", command, nchar(command), integer(1), PACKAGE="BRugs") という部分がありますが、ここは前回のエントリでご紹介した説明に従えば brugs.dllのエントリポイントCmdInterpreterに対して BugsEmbed.SetFilePath(fileName) BugsEmbed.ParseGuard BugsEmbed.Parse というコマンドを送り、実行させる 引用ここまで 引用文の『OpenBUGSとの間でやりとりが行われたことがこれで分かります』から推測できる気がします。 一旦諦めて、WinBUGSに切り替えようと思います。本当にありがとうございました。

  • backs
  • ベストアンサー率50% (410/818)
回答No.1

getwd()で作業ディレクトリを確認してみる。 getwd()で表示された作業ディレクトリに指定のファイルが存在しているかどうか確認してみる。 とりあえず、方法はこれしかないですね。最悪、フルパスでファイル名を指定すれば、どの作業ディレクトリであるかは問題にならないでしょう。

naturalboy
質問者

補足

ご回答ありがとうございます。 ディレクトリは確かに変更してあります。そしてmodel.txtも存在しています。実際に > setwd("C:/work") > getwd() [1] "C:/work" を確認してから、再度試してみました > library(BRugs) 要求されたパッケージ coda をロード中です 要求されたパッケージ lattice をロード中です Welcome to BRugs running on OpenBUGS version 3.0.3 > modelCheck("model.txt") 以下にエラー file(con, "r") : コネクションを開くことができません 追加情報: Warning message: In file(con, "r") : ファイルを開くことができません: No such file or directory と同じ結果になってしまいます。 ネットで調べて成功パターンのサンプルを発見したので下に載せますと > library(BRugs) Welcome to BRugs running on OpenBUGS version 2.2.0 beta > setwd(system.file("OpenBUGS", "Examples", package = "BRugs"))> modelCheck("seedsmodel.txt") model is syntactically correct 上のプログラムはBRugsのライブラリー所定のExamplesのサンプルデータは使っているので間違えるはずがないのですが、自分が上のプログラムを真似て実行してみると > setwd(system.file("OpenBUGS", "Examples", package = "BRugs")) > getwd() [1] "C:/PROGRA~1/R/R-27~1.1/library/BRugs/OpenBUGS/Examples" > modelCheck("seedsmodel.txt") 以下にエラー file(con, "r") : コネクションを開くことができません 追加情報: Warning message: In file(con, "r") : ファイル 'C:\DOCUME~1\usr\LOCALS~1\Temp\RtmpW2eP0C/buffer.txt' を開くことができません: No such file or directory とエラーになってしまいます."Examples"に確かに"seeds.model"も存在しています。エラーメッセージの『file(con, "r") : コネクションを開くことができません』でキーワード検索して色々調べてるのですが原因がつかめません。長文になってしまい失礼いたしました。

関連するQ&A