- 高階 知巳 [たかしな ともみ], 2008: R プログラミング & グラフィックス。九天社。
- 高階 知巳, 2008: プログラミングR — 基礎からグラフィックスまで。オーム社, 312 pp. ISBN 978-4-274-06743-3. [わたしはこの版を読んだ。] 著者によるサポートページ http://www007.upp.so-net.ne.jp/t_takashina/R-Program/Sample_Program.html [本書巻頭 v ページに書かれたURLは無効になっている。]
このところ、わたしは「つんどく」というか「不良在庫」というかになっていた R の技術書を見なおしている。目次を書きぬいてみて、知りたいことがあったらどこを参照できるかがわかったので、ようやく「良在庫」にできたような気がする。
本書は、2008年5月に九天社から出た本が、出版社が倒産して売られなくなってしまったので、2008年11月にあらためてオーム社から出版された。参照されている R のバージョンは 2.6.2 だ。
わたしは2009年7月に買った。それまでにわたしが見た R の初級の本は、R を道具とした統計学の入門書だった。わたしは統計学がやりたかったわけではなくて、データをグラフにするのに R をつかいたかったので、グラフのつくりかたと、データを R であつかえるようにしたり、グラフで示したい量に変換したりするためのプログラムの書きかたを知りたかったのだった。
本書は、プログラム言語としての R でのプログラミングと、グラフ作図 (大部分は R でとくにことわらずにつかえる graphics パッケージによるもの) の技術を紹介したもので、統計学にはほとんどふれていない。著者は工学系の博士課程を出て企業に勤務している人で、画像処理を専門とし、パッケージ rimage の作者でもある。本書の例文も画像処理や信号処理の話題をつかっている (画像処理の教材としては説明がすくなすぎるが)。だから、この本はわたしの目的によくあっていると思って買ったのだ。
実際、わたしは R で作業をするときこの本をよく持ち歩いた。しかし、2020年12月に目次を書きぬきながらふりかえってみると、この本のうちごくかぎられたところしか読んでいなかった。わたしの R の利用スタイルが、ともかくプログラムをつくりはじめて試行錯誤で改良するものになっていて、わからないことがあるとオンラインマニュアルかネット上にあるユーザーの経験集のページにたよることが多く、本書はネット情報でわからなかったときだけ辞書的に参照したのだった。
【2009年ごろのわたしは、いくらかのデータ解析作業を R にうつしたものの、大部分はそれよりまえからの、Fortran と Awk で処理して GMT (Generic Mapping Tools) か GrADS で作図するというスタイルをつづけてしまった。本を読み、読書ノートを書くこともしていたが、それは科学と社会とのかかわりに関するものが多くなり、技術書を読むことはすくなくなっていた。】
しかし、目次を書きぬいてみて、わたしはもっとたびたび本書を参照したほうがよかったと思った。プログラミング言語としての文法の要点や、graphics 関数の機能の要点がよくまとめられていると思う。わたしはまだ R のパッケージをつくったことはないが、つくるとすれば付録の「パッケージの作り方」も参考になりそうだ(最新のパッケージ仕様も確認したほうがよいだろうが)。
折りかえしのあとに くわしい目次をつける。
== 目次 ==
まえがき
本書の構成と動作環境
目次
第1部 環境編
第1章 対話環境への招待: Rのエッセンス
– 1.1 対話の開始と終了
– 1.2 コマンドラインの操作
– 1.3 グラフ電卓から「こんにちは世界」まで
– 1.4 変数を定義しよう
– 1.5 関数を定義しよう
– 1.6 プログラム / データファイル / アドオンパッケージの読み込み
– – 1.6.1 ディレクトリ関係の操作
– – 1.6.2 プログラムの読み込み
– – 1.6.3 データファイルの読み込み
– – 1.6.4 アドオンパッケージの読み込み
– 1.7 ワークスペースとディレクトリ
– – 1.7.1 ワークスペースとその操作
– – 1.7.2 ワークスペースの保存と復帰
– – 1.7.3 初期化関数と片付け関数
– 1.8 オブジェクトと対話
– – 1.8.1 オブジェクト指向的な振る舞い
– – 1.8.2 関数の定義を確認する
– – 1.8.3 オブジェクトの詳細を確認する
– 1.9 対話環境の設定
– – 1.9.1 関数で対話環境の設定を参照・変更したりする方法
– – 1.9.2 Rの起動時に自動的に実行する内容を指定する方法
– 1.10 グラフィックス
– 1.11 まとめ
第2章 ドキュメンテーション
– 2.1 便利なオンラインヘルプ: 見出し語から探す
– 2.2 例の実行
– 2.3 アドオンパッケージのドキュメント
– 2.4 オンラインヘルプの検索
第3章 デバッグの方法
– 3.1 関数単位でのテスト
– 3.2 バグブラウザの使用
– – 3.2.1 recover によるデバッグ
– – 3.2.2 dump.frames によるデバッグ
– – 3.2.3 browser によるデバッグ
– 3.3 まとめ
第4章 バッチ処理
– 4.1 R の BATCH コマンドを使う方法
– 4.2 Unix系シェルのヒアドキュメントを使う方法
第2部 プログラミング編
第5章 プログラミング
– 5.1 R でプログラムするということ
– 5.2 R のプログラムの形式
– 5.3 オブジェクトと変数
– 5.4 文とブロック
– 5.5 スコープ
– – 5.5.1 関数レベルでのスコープ
– – 5.5.2 パッケージレベルでのスコープ
第6章 データ型
– 6.1 数値型 (numeric)
– – 6.1.1 無限大と非数値
– 6.2 整数型 (integer)
– 6.3 論理型 (logical)
– – 6.3.1 欠損値
– 6.4 文字型 (character)
– 6.5 因子型 (factor)
– 6.6 複素数型 (complex)
– 6.7 型テストと型変換
第7章 データの集合
– 7.1 ベクトル
– – 7.1.1 c() について
– 7.2 行列
– 7.3 配列
– 7.4 リスト
– 7.5 データフレーム
– 7.6 要素の参照方法
– – 7.6.1 単純参照
– – 7.6.2 名前付き参照
– – 7.6.3 集合参照
– – 7.6.4 除外参照
– – 7.6.5 条件付き参照
– – 7.6.6 リストの要素の参照
– 7.7 データ構造の部分書き換え
– 7.8 データ構造の合成・結合
– 7.9 異なるデータ構造間での変換
– 7.10 例題: 家計簿
第8章 演算子
– 8.1 四則演算子
– 8.2 比較演算子
– 8.3 論理演算子
第9章 関数
– 9.1 関数型プログラミング
– 9.2 関数の定義
– 9.3 引数の順番と省略
– 9.4 複数の値を返したい場合
– 9.5 ローカル変数・関数
– 9.6 匿名関数
– 9.7 再帰呼び出し
– 9.8 まとめ
第10章 制御構造
– 10.1 if による場合分け
– 10.2 for による繰り返し
– 10.3 break と next による制御
– 10.4 while と repeat による繰り返し
– 10.5 例題: ライフゲーム
第11章 算術関数 / 文字列関数 / データ集合の関数
– 11.1 算術関数
– – 11.1.1 1要素の入力から所定の大きさのデータ構造を返す関数
– – 11.1.2 ベクトルの各要素の計算結果をベクトルにする関数
– – 11.1.3 複数要素の入力から1つの値を返す関数
– – 11.1.4 その他の関数
– 11.2 文字列関数
– 11.3 データ集合・統計の演算関数
第12章 ベクトル演算型プログラミング
– 12.1 for ループを使う理由
– 12.2 マッピング
– 12.3 フィルタ
– 12.4 還元
– 12.5 apply系のバリエーション
– 12.6 関数のベクトル
– 12.7 例題 1: 画像の色表現の変換
– 12.8 例題 2: 信号処理
– 12.9 例題 3: アンケート結果の集計
– 12.10 例題 4: 最近傍法
第13章 例外処理
– 13.1 warning() による警告
– 13.2 stop() による停止
– 13.3 stopifnot() による検査
– 13.4 tryCatch() による明示的な復旧
– 13.5 関数型言語と例外処理
第14章 入出力及びオペレーティングシステム
– 14.1 コネクション
– 14.2 表形式のデータの入出力
– 14.3 scan() による項目ごとの入力
– 14.4 readLines() による行ごとの入力
– 14.5 テキスト出力
– 14.6 バイナリデータの入出力
– 14.7 エンコーディングについて
– 14.8 パイプ
– 14.9 ファイル操作関数
– 14.10 ガーベージコレクション
– 14.11 時間
– 14.12 OSとのインタラクション
– 14.13 例題: grep
– 14.14 例題: 表データから複数のファイルへの仕分け
第15章 オブジェクト指向とクラス
– 15.1 R におけるオブジェクト指向の考え方
– 15.2 クラスの定義
– – 15.2.1 継承
– – 15.2.2 オブジェクトの初期値
– – 15.2.3 オブジェクトの生成
– – 15.2.4 スロットへのアクセス
– – 15.2.5 オブジェクトの妥当性検査
– 15.3 メソッドの定義
– 15.4 型変換
– 15.5 例題: 画像クラスの定義
– 15.6 R におけるオブジェクト指向の変遷
第3部 グラフィックス編
第16章 グラフィックス基礎
– 16.1 グラフのカタログ
– 16.2 グラフィック・デバイス
– – 16.2.1 グラフィック・デバイスの操作
– – 16.2.2 マルチページ対応
– 16.3 描画パラメータ
– – 16.3.1 描画オプション
– – 16.3.2 グラフィカルパラメータ
– – 16.3.3 色の指定方法
– 16.4 基本のプロット関数
– – 16.4.1 plot()
– – 16.4.2 legend()
– – 16.4.3 points()
– – 16.4.4 lines()
– – 16.4.5 abline()
– – 16.4.6 画像
– 16.5 高機能なプロット関数
– – 16.5.1 棒グラフ
– – 16.5.2 対散布図
– – 16.5.3 円グラフ
– 16.6 その他の描画機能
– – 16.6.1 テキスト
– – 16.6.2 タイトル
– – 16.6.3 矩形
– – 16.6.4 多角形
– – 16.6.5 スプライン曲線
第17章 グラフィックス応用
– 17.1 レイアウト
– – 17.1.1 レイアウトパラメータ
– – 17.1.2 複数プロットのレイアウト
– 17.2 画像の色の分析
– 17.3 3次元グラフィックス
– – 17.3.1 トレリスにおける 3次元グラフィックス
– – 17.3.2 RGL における 3次元グラフィックス
付録
付録 A パッケージの作り方
– A.1 パッケージ化の意義
– A.2 パッケージを作るための環境
– A.3 パッケージ作成の手順
– – A.3.1 パッケージ・ディレクトリの作成
– – A.3.2 R ファイルの準備
– – A.3.3 外部言語ファイルの準備
– – A.3.4 サンプルデータの準備
– – A.3.5 ドキュメントの記述
– – A.3.6 DESCRIPTION ファイルの記述
– – A.3.7 NAMESPACE ファイルの記述
– – A.3.8 パッケージのチェック
– – A.3.9 パッケージ・ファイルの作成
– A.4 外部言語インタフェース
– A.5 パッケージのインストール
付録 B R の起動オプション
付録 C 練習問題の解答
– C.1 第2章の練習問題
– C.2 第7章の練習問題
索引