• 締切済み

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

  • Rのjagsの使い方について

    Rのjagsの使い方についてご教示願います。 http://cran.r-project.org/web/packages/R2jags/R2jags.pdf 上記のマニュアルに沿ってRのjagsを使ってみたのですが、うまくいきません。 P6から始まるExampleのコードをRで動かしてみたのですが、 『エラー: 関数 "jags" を見つけることができませんでした』と表示されます。 以下のサンプルコードの『## You can input data in 4 waysの(1)』をRに打ち込んで、実行するとエラーが表示されます。 モデルファイルは『「Macintosh HD」→「ライブラリ」→「Frameworks」→「R.frameworks」→「Resources」→「library」→「R2jags」→「model」』におき、作業ディレクトリもここに変更してあります。 # An example model file is given in: model.file <- system.file(package="R2jags", "model", "schools.txt") # Let's take a look: file.show(model.file) # you can also write BUGS model as a R function, see below: #=================# # initialization # #=================# # data J <- 8.0 y <- c(28.4,7.9,-2.8,6.8,-0.6,0.6,18.0,12.2) sd <- c(14.9,10.2,16.3,11.0,9.4,11.4,10.4,17.6) jags.data <- list("y","sd","J") jags.params <- c("mu","sigma","theta") jags.inits <- function(){ list("mu"=rnorm(1),"sigma"=runif(1),"theta"=rnorm(J)) } ## You can input data in 4 ways ## 1) data as list of character jagsfit <- jags(data=list("y","sd","J"), inits=jags.inits, jags.params, n.iter=10, model.file=model.file) ーーーーーーーーーーーーーー 以下ののページにあるjagsのコードについても、上記のエラーが表示されます。 http://web.sfc.keio.ac.jp/~maunz/wiki/index.php?%A5%D9%A5%A4%A5%BA%C5%FD%B7%D7%B1%E9%BD%AC2014_5

  • Rのjagsの使い方についてご教示願います。

    Rのjagsの使い方についてご教示願います。 http://cran.r-project.org/web/packages/R2jags/R2jags.pdf 上記のマニュアルに沿ってRのjagsを使ってみたのですが、うまくいきません。 P6から始まるExampleのコードをRで動かしてみたのですが、 『エラー: 関数 "jags" を見つけることができませんでした』と表示されます。 以下のサンプルコードの『## You can input data in 4 waysの(1)』をRに打ち込んで、実行するとエラーが表示されます。 モデルファイルは『「Macintosh HD」→「ライブラリ」→「Frameworks」→「R.frameworks」→「Resources」→「library」→「R2jags」→「model」』におき、作業ディレクトリもここに変更してあります。 # An example model file is given in: model.file <- system.file(package="R2jags", "model", "schools.txt") # Let's take a look: file.show(model.file) # you can also write BUGS model as a R function, see below: #=================# # initialization # #=================# # data J <- 8.0 y <- c(28.4,7.9,-2.8,6.8,-0.6,0.6,18.0,12.2) sd <- c(14.9,10.2,16.3,11.0,9.4,11.4,10.4,17.6) jags.data <- list("y","sd","J") jags.params <- c("mu","sigma","theta") jags.inits <- function(){ list("mu"=rnorm(1),"sigma"=runif(1),"theta"=rnorm(J)) } ## You can input data in 4 ways ## 1) data as list of character jagsfit <- jags(data=list("y","sd","J"), inits=jags.inits, jags.params, n.iter=10, model.file=model.file) ーーーーーーーーーーーーーー 慶応の古谷先生のページにあるjagsのコードについても、名前は違いますが、 上記のエラーが表示されます。 http://web.sfc.keio.ac.jp/~maunz/wiki/index.php?%A5%D9%A5%A4%A5%BA%C5%FD%B7%D7%B1%E9%BD%AC2014_5

  • fprintfで出力するファイルのパス指定について

    cで以下のコードを書いています。 file.txtを任意の場所に作りたいのですが どうすればいいのでしょうか。 fopen("c:\file.txt", "r"))と書くとエラーになって しまいました。 void main(void) { FILE *fp; if ((fp = fopen("file.txt", "r")) == NULL) { fprintf ( stderr, "err\n" ); exit (2); } fprintf(fp,"%s\n",a);; fclose(fp); }

  • ファイル指定

    こんにちは。 UNIXでPHPを勉強しています。 ファイルの存在チェックをしたいのですが、 if(file_exists($file)){ としています。 $fileにはファイルチェックするファイルと同じディレクトリ内の workというフォルダのtest.txtファイル名を格納したいと考えています。 $fileには どのようにいれればいいのでしょうか? windowsだと $file="work\\test.txt"; でだいじょうぶなのですが・・・

    • ベストアンサー
    • PHP
  • batファイルについて

    C:\work\a\a.txt C:\work\a\b.txt C:\work\a\c.txt C:\work\b\a.txt C:\work\b\d.txt C:\work\c\a.txt C:\work\d\a.txt C:\work\d\e.txt C:\work\d\f.txt 上記のようなファイルがあったとき 各ディレクトリのa.txtだけを残したいのですが (他のファイルは全部削除) どのようなbatファイルを作成すればよろしいのでしょうか。 すみませんが方法がありましたら教えてください。

  • 統計ソフトRのパッケージインストールについて

    Mac(10.9.1)で統計ソフトR(3.0.2)をインストールしました。 Rcmdrを利用しようと、library(Rcmdr)と入力したのですが、 ====== 要求されたパッケージ splines をロード中です 要求されたパッケージ car をロード中です Error : .onAttach は attachNamespace()('Rcmdr' に対する)の中で失敗しました、詳細は: call: structure(.External(.C_dotTclObjv, objv), class = "tclObj") error: [tcl] invalid command name "image". 追加情報: 警告メッセージ: In fun(libname, pkgname) : couldn't connect to display ":0" エラー: 'Rcmdr' に対するパッケージもしくは名前空間のロードが失敗しました ======= と出たり、 ======= 警告メッセージ: '.find.package' is deprecated. Use 'find.package' instead. See help("Deprecated") ======= と出たりします。 いろいろと試行錯誤してみたのですが、どこが悪いのだかわかりません。 どなたか、回答をいただけるとありがたいです。

  • ファイルへの書き込み処理について

    C++の処理で分からないことがあります。 アドバイスを頂けますようよろしくお願い致します。 以下のプログラムがある場合、 どのような時にエラー処理が実行されるのでしょうか? 例えば、書き込み対象のファイル「C:\WORK\20060508.txt」が既に秀丸等で開かれている状態でもエラーは発生するのでしょうか? TRY { CFile file(strLogFilePath, CFile::modeWrite | CFile::modeCreate | CFile::modeNoTruncate); file.SeekToEnd(); file.Write(strText, strText.GetLength()); file.Close(); } CATCH(CFileException, e) { // エラー処理 } ※補足 strLogFilePath=C:\WORK\20060508.txt strText=テストです。

  • ファイルの存在確認方法について(Java)

    あるディレクトリに、 "ファイルが1つ以上存在する"(=もしくは、"ファイルは0個である")というのを判別する方法はありますでしょうか? 今は、既に存在しているファイル名の一つを使って File objFile = new File("C:\\work\\test.txt"); if (objFile.exists()) {  System.out.println("前回のファイルが残っています。削除してから操作してください"); } というように1ファイルずつ名前を指定して書いているのですが、 上記の「\\work」ディレクトリの中にファイルが複数ある時に全てを記載するのは効率が悪いです。 分かる方、教えてください。

    • ベストアンサー
    • Java
  • wikiでローカルファイルのリンクを貼る

    wikiでローカルネットワークにあるファイルのリンクを貼りたいのですが、 どのように記述すれば良いのでしょうか? ↓このファイルを見たい \\192.168.1.1\work\テスト\あああ.txt ↓このように書きました。 [[あああ.txt>file://192.168.1.1/work/テスト/あああ.txt]] ↓こんなのが表示されてしまい開きません。 is_freeze(): fopen() failed: file://192.168.1.1/work/テスト/あああ.txt

  • No such file or エラー。

    $lines=file("file1.txt"); print_r ($lines); とかくと、 Warning: file(file1.txt) [function.file]: failed to open stream: No such file or directory in C:\************************************* on line 51 と、なります。 とうぜん、何も表示されません。 line 51 は、確かに一番上の1行の位置なのですが・・・・。 せっぱ詰まっているせいか、なにがなんだから、分かりません。+w+; PHPと、file1.txtは、同じ場所に置いています。 ”ファイルが開けない”と言われているのは、分かるんですが・・・。 なにか、簡単な事だと、思うのですが、分かりません。 一応、Apache2.0.59/PHPは、4.4.4です。 レンタルしているサーバと同じような設定にしているので、変えることはできません。 文字コードは、EUCで統一しています。

    • 締切済み
    • PHP