間瀬 茂 (2007) R プログラミングマニュアル (初版の読書メモ)

  • 間瀬 茂, 2007: R プログラミングマニュアル (新・数理/工学ライブラリ 情報工学 1)。数理工学社 (発売: サイエンス社), 335 pp. ISBN 978-4-901683-50-0. [わたしはこの版を読んでいる。]
  • 間瀬 茂, 2014: R プログラミングマニュアル 第2版 (R バージョン3 対応)。数理工学社 (発売: サイエンス社), 359 pp. ISBN 978-4-86481-015-9. [わたしはこの版はまだ見ていない。]

Rの技術書の「在庫整理」にもう1冊追加する。この本は2014年に第2版が出ているので、ひとにすすめるならばそれを読んで紹介するべきなのだが、わたしは、2007年に出た初版 (くわしくいうと、2008年3月に出た第2刷)を2009年に買って持っているので、第2版を買うかどうか考えるまえに初版をながめてみることにした。

著者は数学からはいった統計学者で、空間分布をもつ量の統計学を専門としている。(そちらの主題の著書もわたしの仕事と無関係ではないのだが、わたしはまだ手を出せずにいる。) 本書は、著者の専門性のほかに、とくに「Tips」に関して、岡田 昌史 さんが運営している RjpWiki というサイトにあつまったおおぜいの人びとの知恵を反映している。

本書は、プログラム言語としての R の機能に関する知識を整理した本である。統計学的なこととグラフィックスは意図的にはずされている。

ほかの R の技術書であまり見なかった論点として、浮動小数点による数値計算の誤差のこと (第14章)がある。また、計算時間を短くするためのくふう (第21章) とか、使用メモリ量を設定すること (第20章の多数の話題のひとつ) などは、大量のデータをあつかっている人ならではの観点だと思う。

行列 (matrix) については第6章で、単なる2次元配列としてのあつかいだけでなく、線形代数にでてくる行列の演算のための関数や演算子があることが紹介される。そして第21章で、計算効率のためには (行列の要素についてループをまわすのではなく) 行列演算をつかうべきであると言っている。ただし本書を読んだだけでは線形代数の式を R のプログラムになおせるところまではいかない。それにはその態度で書かれた教科書的なものが必要だ。

【目次だけでも (A5判で) 13ページあるので、書きぬきには OCR をつかうことにした。ただし、スキャンの際の画像パラメータの設定がうまくないままやってしまったので (章の題名が灰色の背景に黒字で書かれているので、グレースケール画像にしたのだが、むしろ章の題名をあきらめて白黒二値で画素数の多い画像にするべきだった)、OCRが失敗して手作業でなおしたところがだいぶあった。それでも全部手でうちこむよりは楽にできたと思う。】

折りかえしのあとに 目次をつける。

== 目次 ==
まえがき
目次
第1章 序 … 1
– 1.1 このマニュアルについて … 1
– 1.2 Rキーワード集 … 3
第2章 論理オブジェクトと論理演算 … 6
– 2.1 論理オブジジェクト … 6
– – 2.1.1 論理値 TRUE, FALSE … 6
– – 2.1.2 論理型オブジェクト NA … 7
– 2.2 論理演算 … 8
– – 2.2.1 基本論理演算子 … 8
– – 2.2.2 オブジェクトの完全一致判断 identical … 10
– – 2.2.3 全てが真か? all … 10
– – 2.2.4 どれかが真か? any … 10
– – 2.2.5 ほとんど等しいか? all.equal … 10
– – 2.2.6 属性が一致するか? attr.all.equal … 11
– – 2.2.7 全てが真でなければ実行中断 stopifnot … 11
– 2.3 論理判断 Tips … 12
– – 2.3.1 数値としての TRUE, FALSE … 12
第3章 繰り返しと選択 … 14
– 3.1 繰り返し … 14
– – 3.1.1 範囲に渡って繰り返す for ループ … 14
– – 3.1.2 条件が満たされる限り繰り返す while ループ … 16
– – 3.1.3 単純繰り返し repeat ループ … 16
– – 3.1.4 次の実行サイクルへ飛ぶ next … 16
– – 3.1.5 実行の中断 break … 17
– 3.2 選択実行 … 17
– – 3.2.1 条件による分岐 if(), if() else … 17
– – 3.2.2 ベクトル化条件分岐 ifelse … 17
– – 3.2.3 多重選択 switch … 18
– – 3.2.4 メニューによる選択 menu … 19
– 3.3 繰り返しと選択 Tips 集 … 20
– – 3.3.1 for 文の返り値 … 20
– – 3.3.2 行列・配列を範囲に取る for ループ … 20
– – 3.3.3 相異なるループ変数による 3重ループ … 20
– – 3.3.4 ベクトル成分の長さ 3 の全ての順列・組合せに関してループする … 20
– – 3.3.5 for 文のループ範囲に seq を使う … 21
– – 3.3.6 if 文で数値を論理値として使う … 22
– – 3.3.7 if, ifelse 文の返り値 … 22
第4章 ベクトル … 23
– 4.1 ベクトルを作る … 23
– – 4.1.1 要素を結合してベクトルを作る c … 23
– – 4.1.2 規則的なベクトルを作る numeric … 23
– – 4.1.3 規則的なベクトルを作る : … 24
– – 4.1.4 規則的なベクトルを作る seq, sequence … 24
– – 4.1.5 規則的なベクトルを作る rep … 25
– – 4.1.6 長さとモードを指定してベクトルを作る vector, as.vector … 26
– – 4.1.7 ランダムなベクトルを作る sample … 27
– 4.2 ベクトルの添字操作 … 28
– – 4.2.1 ベクトル成分の抽出 括弧演算子 [ ] … 28
– – 4.2.2 ベクトル成分の置き換え 括弧演算子 [ ] … 28
– – 4.2.3 論理値ベクトルによるベクトルの添字操作 … 28
– – 4.2.4 条件に適合するベクトル成分の添字を得る which … 29
– – 4.2.5 ベクトル成分の抽出 2重括弧演算子 [[ ]] … 30
– – 4.2.6 名前属性を用いたベクトル成分の抽出 … 30
– – 4.2.7 ベクトルの一部を取り出す subset … 31
– 4.3 ベクトルを操作する関数 … 31
– – 4.3.1 ベクトルの長さ length … 31
– – 4.3.2 ベクトル成分の逆転 rev … 32
– – 4.3.3 累積関数・差分 cumxxx, diff … 32
– – 4.3.4 ベクトルから同じ数が引き続く回数とその数を取り出す rle, inverse.rle … 33
– – 4.3.5 一意化 unique … 33
– – 4.3.6 重複する要素の添字を返す duplicated … 33
– – 4.3.7 一部を置き換える replace … 34
– – 4.3.8 成分を挿入 (付加) する append … 34
– – 4.3.9 成分のマッチング match … 34
– – 4.3.10 ベクトルの成分に因子グループ毎に関数を適用する ave … 35
– – 4.3.11 条件による成分選択 ifelse … 36
– – 4.3.12 ベクトルの大小順並べ変え添字ベクトル order … 36
– – 4.3.13 数値ベクトルを指定した区間に分類する cut … 37
– – 4.3.14 ある値が増加数列のどこにあるかを計算 findlnterval … 38
– – 4.3.15 数値ベクトルの要約 summary … 38
– – 4.3.16 関数の連続適用によるベクトル生成 sapply … 38
– – 4.3.17 ベクトルの外積 outer … 38
– 4.4 べクトル Tips 集 … 39
– – 4.4.1 ベクトルの内積・ノルムを求める … 39
– – 4.4.2 ベクトル成分の順序を他のベクトルの成分の大小に応じて並べ変える … 39
– – 4.4.3 ベクトルをリストに変換する … 40
– – 4.4.4 数値ベクトルを表す文字列をベクトルに変換する … 40
– – 4.4.5 数値ベクトルの対話的入力 … 40
第5章 文字列とマッチング …42
– 5.1 文字列ベクトル … 42
– – 5.1.1 文字列ベクトルの一部の取り出し・置き換え substr, subsing … 42
– – 5.1.2 文字列を指定幅に切り詰める strtrim … 43
– – 5.1.3 文字列をパターンに従って分解 strsplit … 43
– – 5.1.4 文字列の結合 paste … 44
– – 5.1.5 文字数を数える nchar … 45
– – 5.1.6 文字の変換 chartr, tolower, toupper … 46
– – 5.1.7 数値を表す文字列ベクトルを数値ベクトルに変換 type.convert … 46
– – 5.1.8 文字列ベクトルからの対話的選択 select.list … 46
– – 5.1.9 文字列の部分的マッチング charmatch … 47
– 5.2 正規表現 … 48
– – 5.2.1 拡張正規表現 … 48
– – 5.2.2 基本正規表現 … 48
– – 5.2.3 Perl式正規表現 … 50
– – 5.2.4 部分名でオブジェクトを探す apropos, find … 50
– – 5.2.5 UNIXシェル風ワイルドカード指定を正規表現に変換する glob2rx … 51
– – 5.2.6 文字列のパターンマッチングと置き換え grep, sub, gsub, regexpr. gregexp … 51
– 5.3 文字列 Tips … 53
– – 5.3.1 文字列・ラベル … 53
第6章 行列 … 55
– 6.1 行列の生成・検査・行列への変換 … 55
– – 6.1.1 1つのベクトル・リストから行列を作る matrix … 55
– – 6.1.2 属性を持つオブジェクトの生成 structure … 56
– – 6.1.3 複数のベクトル・行列をつなげて行列を作る rbind, cbind … 58
– – 6.1.4 行列に変換する as.matrix … 58
– – 6.1.5 行列かどうか検査する is.matrix … 58
– – 6.1.6 行列の要約 str, summary … 59
– 6.2 行列の次元・次元名属性 … 59
– – 6.2.1 行列の次元属性 dim, nrow, ncol … 59
– – 6.2.2 行列の次元名属性 dimnames, rownames, colnames … 59
– – 6.2.3 ベクトル・リストに次元属性を与えて行列を作る dim … 60
– – 6.2.4 行列をベクトル化する as.vector … 62
– 6.3 行列の添字操作 … 63
– – 6.3.1 行列成分の抽出 括弧演算子 [,] … 63
– – 6.3.2 行列成分の置き換え 括弧演算子 [,] … 64
– – 6.3.3 論理値行列による行列の添字操作 … 65
– – 6.3.4 添字行列で行列成分を取り出す・変更する … 66
– – 6.3.5 ある条件に適合する行列成分の添字を得る which … 67
– – 6.3.6 行列成分の抽出 2重括弧演算子 [[,]] … 68
– – 6.3.7 添字行列による行列成分の抽出 … 69
– – 6.3.8 行列の一部を取り出す subset … 69
– 6.4 転置行列と対角・三角行列 .. 69
– – 6.4.1 転置行列 t … 69
– – 6.4.2 対角行列 diag … 70
– – 6.4.3 三角行列 lower.tri, upper.tri … 72
– 6.5 行列の操作 … 72
– – 6.5.1 行列に対する四則演算 … 72
– – 6.5.2 行列の行番号・列番号からなる行列を返す row, col … 74
– – 6.5.3 行列の列のスケール化 scale … 74
– – 6.5.4 行列の次元にベクトルを適用 sweep … 75
– – 6.5.5 行列から重複した行・列を除いて一意化する unique … 75
– – 6.5.6 リストの各成分に指定関数を適用した結果をベクトル・行列の形で返す sapply … 76
– – 6.5.7 行列にその周辺和をつけ加えた行列を作る addmargins … 76
– – 6.5.8 行列の行和・列和 rowSums, colSums … 77
– – 6.5.9 行列の各行の最大成分位置 max.col … 77
– 6.6 行列に対する各種積 … 78
– – 6.6.1 行列積・クロス積 %*%, crossprod, tcrossprod … 78
– – 6.6.2 行列・配列の外積 %o%, outer … 79
– – 6.6.3 行列のクロネッカー積 %x%, kronecker … 80
– 6.7 行列 Tips 集 … 82
– – 6.7.1 行列をベクトルに変換する … 82
– – 6.7.2 行列全体をベクトルで置き換える … 82
– – 6.7.3 整数行列の保管モードを整数型にする … 82
– – 6.7.4 行列のグラフィックス表示 plot, matplot, image, symnum … 83
– – 6.7.5 大きなな行列の一部を見る … 84
– – 6.7.6 規則性のある行列の生成 … 84
– – 6.7.7 行列の全体としての同等性を検査 … 84
– – 6.7.8 実数行列の誤差範囲内での同等性を検査 … 85
– – 6.7.9 成分全てが 0 (全てが 1) の行列を作る … 85
– – 6.7.10 NA 値を 0 で一括置き換え … 85
– – 6.7.11 対称行列の効率的計算 … 85
– – 6.7.12 数値データフレームを行列に変換する … 86
– – 6.7.13 行列の成分の自乗の総和 … 86
– – 6.7.14 複数のベクトルの成分の全ての組合せからなる行列 … 86
– – 6.7.15 行列の次元名を機械的につける … 87
– – 6.7.16 完全なケース (NA を含まない) の行だけを取り出す … 87
– – 6.7.17 Hilbert 行列のランクを求める … 88
– – 6.7.18 行列関数の微分 … 88
– – 6.7.19 行列の一般化内積 … 88
– – 6.7.20 ベクトルから上・下三角行列を作る … 89
第7章 配列 … 90
– 7.1 配列の生成と操作 … 90
– – 7.1.1 配列の生成と添字操作 … 90
– – 7.1.2 配列の一般化転置 aperm … 92
– – 7.1.3 配列のあるマージンに関数を適用 apply … 93
– – 7.1.4 配列のマージンに周辺和を加える addmargins … 93
– 7.2 配列 Tips 集 … 95
– – 7.2.1 0 の項目の表示 … 95
– – 7.2.2 任意オフセットを持つ行列・配列 … 95
– – 7.2.3 配列にダミー次元を加える … 96
– – 7.2.4 配列をベクトルとしてアクセスする … 96
– – 7.2.5 配列のマージン毎の一致検査 … 97
第8章 リスト … 98
– 8.1 リストを生成する … 98
– – 8.1.1 リストを生成する list, as.list … 98
– – 8.1.2 ベクトルをリストに変換 as.list .., 100
– – 8.1.3 リストの連結 c … 100
– – 8.1.4 リストの成分を取り出す [ ], [[ ]], $ … 101
– – 8.1.5 リストの行列化 … 102
– – 8.1.6 リスト成分の変更 [[ ]] <- ... 102 - - 8.1.7 関数のリスト返り値 .... 103 - - 8.1.8 for ループのリスト範囲 ... 103 - - 8.1.9 関数仮引数リスト alist ... 103 - 8.2 リストを操作する関数 ... 104 - - 8.2.1 リストをベクトルに変換 unlist ... 104 - - 8.2.2 リストを再帰的に変更する modifyList ... 104 - 8.3 リスト Tips 集 ... 105 - - 8.3.1 複数回の計算結果をリストで返す lapply ... 105 - - 8.3.2 関数リストの行列化 ... 105 - - 8.3.3 データとその解析関数の一括リスト化 ... 106 - - 8.3.4 リストの成分名を関数引数で与える ... 107 - - 8.3.5 関数引数にリストとその成分名を与える ... 107 - - 8.3.6 多重ループをリスト範囲で実現 ... 108 - - 8.3.7 リストを行列に変換 ... 108 - - 8.3.8 リストに同一の変数ラベルを与える ... 109 第9章 データフレーム ... 110 - 9.1 データフレーム ... 110 - - 9.1.1 データフレームを作る data.frame ... 110 - - 9.1.2 データフレームを変形する transform ... 112 - - 9.1.3 データフレームの一部を取り出す subset ... 113 - - 9.1.4 2つのデータフレームを結合する merge ... 115 - - 9.1.5 リスト成分ベクトルを因子に応じて整列化する stack, unstack ... 117 - - 9.1.6 経時観測データフレームを横長, 縦長形式に相互変換 reshape ... 119 - - 9.1.7 データフレームを因子でグループ化し関数を適用 by ... 121 - - 9.1.8 ケースを加える, 置き換える ... 122 - - 9.1.9 データフレームを数値行列に変換 data.matrix ... 124 - 9.2 データフレームを用いた作業 ... 125 - - 9.2.1 データフレームを環境として登録する attach ... 125 - - 9.2.2 登録された環境を取り除く detach ... 126 - - 9.2.3 データから作られた環境中で R 表現式を評価する with ... 127 - 9.3 データフレーム Tips 集 ... 128 - - 9.3.1 データフレームを吟味する ... 128 - - 9.3.2 データフレームの変数名を簡略化する ... 129 - - 9.3.3 データフレームに新しい変数を加える ... 129 - - 9.3.4 ファイルデータを attach する ... 130 - - 9.3.5 定数値である変数を除く ... 130 - - 9.3.6 完全なケ-スだけを取り出す complete.cases ... 131 - - 9.3.7 ベクトル, 因子の全ての組合せから成るデータフレームを作る expand.grid ... 131 - - 9.3.8 2つのデータフレームを横に結合する ... 131 - - 9.3.9 データフレームの変数成分を取り出す速度比較 ... 132 - - 9.3.10 データフレームに同一の変数ラベルを与える ... 133 第10章 因子 ... 134 - 10.1 因子 ... 134 - - 10.1.1 ベクトルを因子にする factor ... 134 - - 10.1.2 水準パターンを与えて因子を作る gl ... 135 - - 10.1.3 組合せ因子を作る interaction ... 136 - - 10.1.4 因子の水準属性 levels ... 136 - - 10.1.5 因子の水準数 nlevels ... 137 - - 10.1.6 因子の添字操作 ... 137 - - 10.1.7 因子水準の並べ変え reorder ... 137 第11章 関数 ... 139 - 11.1 関数の書き方の基本 ... 139 - 11.2 関数名 ... 140 - - 11.2.1 引用符で囲む必要がある関数名 ... 140 - - 11.2.2 関数名に使えない・好ましくない名前 ... 141 - - 11.2.3 名前のない関数 ... 141 - - 11.2.4 関数名に関するその他注意 ... 141 - 11.3 関数仮引数 ... 142 - - 11.3.1 関数仮引数リスト ... 142 - - 11.3.2 省略時既定値つき仮引数 ... 142 - - 11.3.3 省略仮引数 ... 143 - - 11.3.4 仮引数は関数オブジェクトでも良い ... 144 - - 11.3.5 実引数の遅延評価 ... 144 - - 11.3.6 引数名は既存変数名と同じでも良い ... 145 - - 11.3.7 仮引数名の省略 ... 145 - - 11.3.8 仮引数リストを取り出す・設定する formals, args ... 146 - - 11.3.9 実引数リストを取り出す substitute ... 146 - - 11.3.10 仮引数が存在するかどうかチェック missing ... 147 - - 11.3.11 仮引数のマッチング match.arg ... 147 - - 11.3.12 モデル式とチルダ演算子 ~ ... 148 - 11.4 関数本体 ... 149 - - 11.4.1 関数本体を取り出す・設定する body ... 150 - - 11.4.2 関数の再帰的定義 Recall ... 150 - - 11.4.3 関数内部での関数定義 ... 150 - 11.5 返り値 ... 151 - - 11.5.1 暗黙の返り値 ... 151 - - 11.5.2 返り値の指定 return ... 151 - - 11.5.3 リスト返り値 ... 152 - - 11.5.4 不可視返り値 invisible ... 153 - - 11.5.5 返り値のベクトル化 ... 153 - - 11.5.6 返り値の活用 ... 164 - - 11.5.7 関数オブジェクトを返り値にする関数 ... 154 - 11.6 関数のエラー・終了処理 ... 155 - - 11.6.1 エラー処理 stop ... 155 - - 11.6.2 エラー処理 stopifnot ... 155 - - 11.6.3 讐告メッセージ warning ... 155 - - 11.6.4 終了処理 on.exit ... 156 - 11.7 関数のデバッグ ... 156 - - 11.7.1 万能デバッグ関数 cat ... 156 - - 11.7.2 デバッグ用関数 browser ... 157 - - 11.7.3 デバッグ用関数 debug ... 157 - 11.8 関数 Tips 集 ... 158 - - 11.8.1 オブジェクト名にマッチする関数を返す関数 match.fun ... 158 - - 11.8.2 関数中の未定義オブジェクトを固定 local ... 159 - - 11.8.3 計算機環境で中身が変わる関数の定義 ... 159 - - 11.8.4 関数の実行測度計測 system.time ... 160 - - 11.8.5 コードのボトルネックの発見 Rprof ... 160 - - 11.8.6 関数のソースコードを見る methods, getS3method ... 161 - - 11.8.7 R の構文を引数として関数に渡す ... 161 - - 11.8.8 関数を関数内で作る方法 ... 162 - - 11.8.9 ベクトル化定数値関数 ... 162 - - 11.8.10 引用符あれこれ ... 163 第12章 apply 関数族 ... 165 - 12.1 配列のマージンに関数を適用 apply ... 165 - 12.2 複数回の計算結果をリストで返す lapply, sapply, replicate ... 167 - 12.3 複数引数に関数を多重適用 mapply ... 169 - 12.4 因子グループ毎に関数を適用 tapply ... 170 - 12.5 データフレームに対する tapply 関数 by ... 171 - 12.6 オブジェクトをグループに分けて要約する aggregate ... 172 - 12.7 再帰的にリストに関数を適用 rapply ... 172 - 12.8 環境中の変数に関数を適用 eapply ... 173 - 12.9 apply 関数族 Tips ... 174 - - 12.9.1 apply 関数族のループ機能だけを使う ... 174 第13章 作表関数 ... 175 - 13.1 作表関数 ... 175 - - 13.1.1 分割表 table ... 175 - - 13.1.2 クロス集計 xtabs ... 177 - - 13.1.3 フラットな集計表 ftable ... 179 - - 13.1.4 フラットな分割表の読み書き write.ftable, read.ftable ... 181 - - 13.1.5 その他 prop.table, margin.table, addmargins ... 182 - 13.2 作表関数 Tips ... 182 - - 13.2.1 表の表 table(table()) ... 182 第14章 R の数値関数 ... 183 - 14.1 2項型数値演算子 ... 183 - 14.2 初等数値関数 ... 184 - - 14.2.1 三角関数ファミリ ... 184 - - 14.2.2 hyperbolic 関数ファミリ ... 184 - - 14.2.3 対数・指数関数ファミリ ... 184 - 14.3 超越関数 ... 185 - - 14.3.1 ガンマ関数ファミリ ... 185 - - 14.3.2 ベッセル関数ファミリ ... 185 - 14.4 その他の関数 ... 185 - - 14.4.1 組合せ論的関数 ... 185 - - 14.4.2 符号・絶対値・平方根 ... 186 - - 14.4.3 数値ベクトルに対する逐次処理関数 ... 186 - - 14.4.4 丸め関数 ... 187 - 14.5 集合演算 ... 188 - 14.6 ソート関数 sort ... 189 - 14.7 オーダ関数 order ... 190 - 14.8 ランク関数 rank ... 191 - 14.9 基本統計処理関数群 ... 191 - 14.10 浮動小数点演算 ... 192 - - 14.10.1 浮動小数点演算関連定数値 .Machine ... 193 - - 14.10.2 桁落ち・桁溢れ・丸め誤差 ... 194 - 14.11 R の数値関数 Tips 集 ... 195 - - 14.11.1 浮動小数点演算の落し穴 ... 195 - - 14.11.2 銀行型丸め ... 196 第15章 日付・時間 ... 198 - 15.1 日付・時間用のクラスと関数 ... 198 - - 15.1.1 date クラス "Date" ... 198 - - 15.1.2 date-time クラス "POSIXlt", "POSIXct" ... 199 - - 15.1.3 時間差 difftime ... 200 - - 15.1.4 date-time クラスオブジェクトと文字列間の変換 ... 200 - 15.2 日付・時間用の関数の Tips 集 ... 201 - - 15.2.1 ジュリアン通日 ... 201 - - 15.2.2 タイムゾーン ... 202 第16章 入出力 ... 203 - 16.1 標準人出力 ... 203 - - 16.1.1 標準入出力 cat ... 203 - - 16.1.2 標準出力 print ... 204 - - 16.1.3 標準出力 show ... 206 - - 16.1.4 標準出力 sprint ... 206 - - 16.1.5 コンソールからの複数行テキストの入力 readLines ... 208 - - 16.1.6 コンソールからの入力 readline ... 208 - - 16.1.7 ファイルへの出力 write ... 210 - - 16.1.8 ファイルへの出力 sink ... 211 - - 16.1.9 ファイルへの出力 capture.output ... 212 - 16.2 コネクション ... 212 - - 16.2.1 テキストコネクション textConnection ... 213 - - 16.2.2 コネクションを作る・開く・閉じる ... 213 - - 16.2.3 その他 ... 215 - 16.3 データやコードを読み込む・書き出す ... 215 - - 16.3.1 データをベクトルやリストに読み込む scan ... 215 - - 16.3.2 表形式のファイルを読み込みデータフレームにする read.table ... 217 - - 16.3.3 読み込んだファイルの欄数を数える count.fields ... 220 - - 16.3.4 幅固定欄ファイルを読み込みデータフレームにする read.fwf ... 220 - - 16.3.5 R コードをファイルやコネクションから読み込む source ... 221 - - 16.3.6 save 関数で保存されたデータセットを再読み込み load ... 222 - - 16.3.7 R オブジェクトを保存する save, save.image ... 222 - - 16.3.8 データセットを読み込む, 一覧表示する data ... 223 - - 16.3.9 R オブジェクトのテキスト表現 dump ... 223 - - 16.3.10 テキストファイルに書き出す・読み込む dput, dget ... 224 - 16.4 ファイル・ディレクトリ操作 ... 224 - - 16.4.1 ファイル・ディレクトリを削除する unlink ... 224 - - 16.4.2 ファイル・ディレクトリを操作する幾つかの関数 ... 225 - - 16.4.3 ファイルを表示する file.show ... 226 - - 16.4.4 ディレクトリ・フォルダ中のファイルを一覧表示する list.files, dir ... 226 - - 16.4.5 作業ディレクトリを得る・変える getwd, setwd ... 227 - - 16.4.6 R,のホームディレクトリを表示する R.home ... 227 - - 16.4.7 ファイルシステム中のファイル情報を取り出す file.info ... 227 - - 16.4.8 ファイルを対話的に選ぶ file.choose ... 228 - - 16.4.9 インターネット経由でファイルをダウンロード download.file ... 228 - 16.5 R オブジェクトの整形 ... 229 - - 16.5.1 R オブジェクトの整形 format ... 229 - - 16.5.2 R オブジェクトの整形 formatC ... 229 - - 16.5.3 R オブジェクトの整形 encodeString ... 231 - - 16.5.4 R オブジェクトの整形 noquote ... 232 - 16.6 入出力 Tips 集 ... 232 - - 16.6.1 R セッションの標準出力をファイルに保存する ... 232 - - 16.6.2 現在の作業環境をファイルに保存し、それを次回に復元 save.image ... 233 - - 16.6.3 自前の関数定義を保存し、次回使えるようにする save.source ... 233 - - 16.6.4 様々な外部形式ファイルを R に読み込む ... 234 - - 16.6.5 複数のファイルを一度に読み込む ... 234 - - 16.6.6 複数のファイルを一括してリストに読み込む ... 235 - - 16.6.7 デ一夕の書き出しと読み込み ... 235 - - 16.6.8 先頭文字を与えて一時ファイル名を作る tempfile ... 236 - - 16.6.9 テキストコネクションとファイル読み込み関数を組み合わせる ... 236 - - 16.6.10 コピー & ペーストとテキストコネクション ... 237 - - 16.6.11 コンソ一ル出力を消す ... 238 第17章 環境 ... 239 - 17.1 環境・検索パス・スコープ規則 ... 239 - - 17.1.1 環境 ... 239 - - 17.1.2 検索パス ... 240 - - 17.1.3 名前空間 ... 242 - - 17.1.4 関数のクロージャ環境・評価環境 ... 242 - - 17.1.5 スコ一プ規則・レキシカルスコープ ... 243 - - 17.1.6 関数引数 ... 244 - - 17.1.7 予約オブジェクト ... 245 - 17.2 環境を操作する関数 ... 247 - - 17.2.1 検索パス search, searchpaths ... 247 - - 17.2.2 環境を取得・設定・検査・作成する ... 247 - - 17.2.3 環境ヘアクセスするための関数群 ... 248 - - 17.2.4 指定環境へソースコードを読み込む sys.source ... 251 - - 17.2.5 トップレペルの環境を見つける topenv ... 251 - - 17.2.6 永続的付値 <<-, --> … 252
– – 17.2.7 環境への付値 assign … 252
– – 17.2.8 変数を指定環境中で探し, その値を返す get, mge … 253
– – 17.2.9 与えられた名前の変数が存在するか? exists … 254
– – 17.2.10 名前空間を直接操作する関数群 … 255
– – 17.2.11 パッケージ中の変数にアクセスする, 2重・3重コロン演算子 ::, ::: … 256
– – 17.2.12 環境中の変数に関数を適用 eapply … 256
– 17.3 環境 Tips 集 … 256
– – 17.3.1 同じ名前の変数を含む環境を複数登録する … 256
– – 17.3.2 同じデ一タベースを複数登録する … 257
– – 17.3.3 永続付値の怪奇さ … 258
– – 17.3.4 一次的作業環境の使用 new.env … 258
– – 17.3.5 リストとしての環境 … 259
– – 17.3.6 環境オブジェクトは参照渡しが原則 … 260
第18章 言語オブジェクト … 261
– 18.1 言語オブジェクト … 261
– – 18.1.1 言語オブジェクト … 261
– – 18.1.2 代入 substitute … 264
– – 18.1.3 呼び出しの即時実行 do.call … 265
– 18.2 言語オブジェクトを操作する関数 … 266
– – 18.2.1 呼び出しオブジェクトを作る call … 266
– – 18.2.2 表現式オブジェクトを作る expression … 267
– – 18.2.3 名前オブジェクトを作る as.symbol … 267
– – 18.2.4 R 表現式を指定環境で評価する eval, evalq, local … 267
– – 18.2.5 関数呼び出しの実行 do.call … 269
– – 18.2.6 その他 substitute, quote … 269
– – 18.2.7 テキストから表現式を作る parse … 270
– – 18.2.8 引数をフルネームで置き換えた呼び出しを返す match.call … 270
– – 18.2.9 表現式を文字列に変換 deparse … 271
– – 18.2.10 関数引数の評価を強制する force … 272
第19章 クラスとメソッド … 273
– 19.1 クラス・メソッド・総称的関数 … 273
– 19.2 S3 クラス・メソッド … 274
– 19.3 S4 クラス・メソッド … 275
– – 19.3.1 S4 クラスの定義 … 276
– – 19.3.2 クラススロットの操作 … 277
– – 19.3.3 クラスの拡張 … 278
– – 19.3.4 クラススロットのプロトタイプ … 279
– – 19.3.5 クラスの継承 … 279
– – 19.3.6 クラス定義の封印 … 280
– – 19.3.7 S4 メソッド … 280
– 19.4 クラスとメソッド Tips 集 … 282
– – 19.4.1 独自のメソッド関数を定義する … 282
– – 19.4.2 独自の総称的関数を定義する … 283
第20章 R の便利な関数とその他の Tips 集 …284
– 20.1 R の便利な関数 … 284
– – 20.1.1 オブジェクトの内容を簡易表示 str … 284
– – 20.1.2 エラーメッセージの出力を抑制する suppressWarnings … 284
– – 20.1.3 ガベージコレクション関数 gc … 285
– – 20.1.4 エラーが起きても中断しない try … 285
– – 20.1.5 R のオブジェクト・命令を表す文字列を評価実行 eval(parse(text=…)) … 286
– – 20.1.6 使用中の計算機, OS, Rのバージョン情報を得る sessionInfo … 287
– – 20.1.7 内部タイマー proc.time, Sys.sleep … 287
– – 20.1.8 組合せを作る combn … 287
– – 20.1.9 システム命令を実行 system … 288
– – 20.1.10 エディタを使ったオブジェクトの編集 edit, fix … 288
– – 20.1.11 表計算ソフト風のインタフェースでデータを編集 data.entry … 289
– – 20.1.12 オブジェクトにコメントをつける comment … 289
– – 20.1.13 バッチ処理とツール … 290
– – 20.1.14 データ保管に使用するメモリ量の制御 … 291
– – 20.1.15 パッケージのインスト-ル・更新 … 292
– – 20.1.16 パッケージの読み込み … 293
– – 20.1.17 オンラインヘルプ文章 help … 295
– – 20.1.18 デモ demo ・ ビニエット vignette ・ タスクビュー Task Views … 296
– – 20.1.19 必要な情報を探す RSiteSearch … 296
– – 20.1.20 R news を読む readNEWS … 297
– – 20.1.21 文芸的プログラミング Sweave … 297
– – 20.1.22 他言語で書かれたサブルーチンの利用 … 299
– 20.2 その他の Tips 集 … 300
– – 20.2.1 cat 関数のオプション … 300
– – 20.2.2 整数・8進数・16進数・ローマ数字 … 301
– – 20.2.3 付値演算 <- と = ... 301 - - 20.2.4 付値とそのコンソール出力を同時に行う丸括弧関数 ... 302 - - 20.2.5 初心者が困る幾つかの問題 ... 302 - - 20.2.6 関数のソースコードを見る ... 304 - - 20.2.7 既存関数の一部の仮引数の省略時既定値を変更する ... 306 - - 20.2.8 計算が終わったら結果をメールで送る ... 306 - - 20.2.9 必要な情報を探す ... 307 第21章 R コードの高速化のヒント ... 309 - 21.1 計算速度を速くするコツ ... 309 - 21.2 R コードの高速化例 ... 313 参考文献 ... 323 索引 ... 326

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください