R サポーターズ : パーフェクト R

作成日 : 2025-03-24
最終更新日 :

概要

表紙から引用する「R 言語のセオリーを徹底解説」

ファイル出力

p.126 の 7-1-1 コネクションの例を引用する。

    > con <- file("ex.gz", "w")
    > cat("TITLE,extra,line", "2,3,5", "11,13,17", file = "ex2.data", sep = "\n")
    > close(con)

上記プログラムの説明も引用する。

この例では file 関数を用いて確立したコネクションを con オブジェクトに格納し、 それを cat 関数に渡すことで出力しています。file 関数は第1引数である description 引数にファイルパスまたは URL を指定し、 第2引数である open 引数にコネクションのオープンモードを指定することでコネクションを確立します。 cat 関数はベクトルを表示する関数です。渡したベクトルを file 引数に指定したコネクションに対して出力します。 この際、sep 引数に指定した文字列を区切り文字(セパレータ)として用います。(後略)

私が思うに、この説明は違うのではないか。というのは、cat 関数の file 引数にあるのはコネクションではなく、直接のファイルパスだからだ。 おそらく記述を表す正しいプログラムは次の通りではないか。

    > con <- file("ex.gz", "w")
    > cat("TITLE,extra,line", "2,3,5", "11,13,17", file = con, sep = "\n")
    > close(con)

ちなみに、このプログラムは動作し、ex.gz にはファイルができるが、拡張子から予想されるような gzip ファイルではなく、 実際にはテキストファイル、しかも予想されるように CSV 形式のファイルが作成される。なお、本書の p.126 の最下行には、次のプログラム例がある。

    > cat("TITLE,extra,line", "2,3,5", "11,13,17", file = "ex2.data", sep = "\n")

この1行だけで、コネクションの明示的な確立を省略することができるという。 記述を誤ってしまったのは、おそらくコネクションを明示する例と混乱してしまったのだろう。

Part5 データ分析

パッケージ "Nippon"

p.386 から始まる「15 章 時系列解析」で、6 種類のパッケージをインストールするよう要請されている。このうち、パッケージ "Nippon" だけが、 CRAN に登録されていない。どうやら今は CRAN からアーカイブされてしまった(お蔵入りになる、という言い方でいいのか)。 どのような場面で Nippon パッケージが使われているかを本書で見てみると、 p.392 でなお、Nippon パッケージの jyear 関数を用いると西暦を和暦に変換できます。とあるので、 西暦から和暦への変換機能を使っていることがわかる。Nippon パッケージは、本書の他の個所では使われていないようなので、 特に時系列解析にあたって大きな問題となることはないだろう。 なお、Nippon パッケージの類似機能を持つものには Zipangu パッケージがあるが、 これには本書で扱っている西暦から和暦への変換機能がない。

Part6 実践的な開発

Rtools

「23 章 多言語の利用と他言語からの利用」で、23-3 DSL の 23-3-1 Stan を見てみた。stan 関数を実行しようと思ったが、 次のエラー警告が出てくる。

WARNING: Rtools is required to build R packages, but is not currently installed.

Please download and install the appropriate version of Rtools for 4.4.3 from
https://cran.r-project.org/bin/windows/Rtools/.
Trying to compile a simple C file
Running "C:/PROGRA~1/R/R-44~1.3/bin/x64/Rcmd.exe" SHLIB foo.c
system(paste(MAKE, p1(paste("-f", shQuote(makefiles))), "compilers"), でエラー:

'make' not found

呼び出し: <Anonymous> -> .shlib_internal -> system
  実行が停止されました
  WARNING: Rtools is required to build R packages, but is not currently installed.

  Please download and install the appropriate version of Rtools for 4.4.3 from
  https://cran.r-project.org/bin/windows/Rtools/.
  WARNING: Rtools is required to build R packages, but is not currently installed.

  Please download and install Rtools 4.4 from https://cran.r-project.org/bin/windows/Rtools/.
  make cmd is
  make -f "C:/PROGRA~1/R/R-44~1.3/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-44~1.3/share/make/winshlib.mk" CXX='$(CXX17)
  $(CXX17STD)' CXXFLAGS='$(CXX17FLAGS)' CXXPICFLAGS='$(CXX17PICFLAGS)' SHLIB_LDFLAGS='$(SHLIB_CXX17LDFLAGS)'
  SHLIB_LD='$(SHLIB_CXX17LD)' SHLIB="file2f08114c299.dll" WIN=64 TCLBIN= OBJECTS="file2f08114c299.o"

  make would use
  警告メッセージ:
  system(paste(cmd, "-n")) で: 'make' not found
  compileCode(f, code, language = language, verbose = verbose) でエラー:
  system(paste(MAKE, p1(paste("-f", shQuote(makefiles))), "compilers"), でエラー:
  'make' not found
  呼び出し:  -> .shlib_internal -> system
    実行が停止されました
    sink(type = "output") でエラー: コネクションが不正です

Stan を使うのは諦めよう。

書誌情報

書名 パーフェクト R
著者 R サポーターズ
発行日 2013 年 11 月 22 日
発行元 技術評論社
定価 3600 円(本体)
サイズ A5 変形判
ISBN 978-4-7741-8812-6
その他越谷市立図書館で借りて読む

まりんきょ学問所コンピュータの部屋統計活用術統計・時系列の本 > R サポーターズ:パーフェクト R


MARUYAMA Satosi