リファレンス

最終更新日:2024-11-22 | ページの編集

リファレンス


R と RStudio の概要


  • 不完全なコマンドやコードの実行をキャンセルするには、エスケープキーまたは (Ctrl+C) を使用します(シェルで R を使っている場合)。
  • 基本的な算術演算は標準の優先順位に従います:
    • 括弧: (, )
    • 指数: ^ または **
    • 割り算: /
    • 掛け算: *
    • 足し算: +
    • 引き算: -
  • 科学表記が利用可能です。例: 2e-3
  • # の右側はコメントとして扱われ、R によって無視されます。
  • 関数は function_name() の形式で記述します。括弧内の式は評価され、関数に渡されます。関数はネスト可能です。
  • 数学関数: exp, sin, log, log10, log2 など。
  • 比較演算子: <, <=, >, >=, ==, !=
  • 数値を比較するには all.equal を使用します。
  • <- は代入演算子です。右側の式を評価し、左側の変数に格納します。
  • ls は作成したすべての変数と関数を一覧表示します。
  • rm を使用してそれらを削除できます。
  • 関数の引数に値を割り当てる場合、= を使用する必要があります。

RStudio を使ったプロジェクト管理


  • 新しいプロジェクトを作成するには、File -> New Project を選択します。
  • packrat パッケージをインストールして自己完結型プロジェクトを作成します。
  • CRAN からパッケージをインストールするには install.packages を使用します。
  • パッケージを R に読み込むには library を使用します。
  • スクリプト内で参照されるすべてのパッケージがインストールされているか確認するには、packrat::status を使用します。

ヘルプの検索方法


  • 関数のヘルプにアクセスするには、?function_name または help(function_name) を入力します。
  • 特殊な演算子にはクォートを使用します。例: ?"+"
  • 名前を覚えていない場合はファジー検索 ??search_term を使用します。
  • CRAN タスクビュー は良い出発点です。
  • Stack Overflow はコードに関するヘルプを得る良い場所です。
    • ?dput を使用すると、作業中のデータをダンプして他の人が簡単に読み込めるようにできます。
    • sessionInfo() はデバッグに必要な設定情報を提供します。

データ構造


R の個々の値は5つのデータ型のいずれかでなければならず、複数の値はデータ構造にグループ化できます。

データ型

  • typeof(object) はオブジェクトのデータ型を表示します。

  • 主な5つのデータ型:

    • ?numeric 実数(小数点を含む)
    • ?integer 整数のみ
    • ?character テキスト
    • ?complex 複素数
    • ?logical TRUE または FALSE の値

    特別な型:

    • ?NA 欠損値
    • ?NaN “数ではない” 値(例: 0/0)。
    • ?Inf, -Inf 無限大。
    • ?NULL 存在しないデータ構造。

    NA は任意の原子ベクトルに含まれる可能性があります。NaNInf は複素数、整数、または数値型のベクトルのみに含まれる可能性があります。原子ベクトルはすべての他のデータ構造の構成要素です。NULL 値はデータ構造全体の代わりに発生します(ただしリスト要素として含まれる場合があります)。

R の基本データ構造:

  • 原子 ?vector (1種類のデータ型のみを含む)
  • ?list (他のオブジェクトのコンテナ)
  • ?data.frame 異なる型のデータを含むことができる2次元オブジェクト
  • ?matrix 1種類のデータ型のみを含むことができる2次元オブジェクト
  • ?factor あらかじめ定義されたカテゴリカルデータを含むベクトル
  • ?array 1種類のデータ型のみを含む多次元オブジェクト

行列は実際には内部的に原子ベクトルであり、データフレームは内部的にリストであることを忘れないでください。これにより、R の一部の奇妙な動作を説明できます。

ベクトル

  • ?vector() ベクトル内のすべての要素は同じ型でなければなりません。
  • 要素は型変換を使用して別の型に変換できます。
  • 連結関数 c() はベクトルに要素を追加します。
  • seq(from=0, to=1, by=1) は数値のシーケンスを作成します。
  • ベクトル内の要素には names() 関数を使用して名前を付けることができます。

ファクター

  • ?factor() ファクターはカテゴリカルデータを格納するためのデータ構造です。
  • levels() はファクター型のベクトルに格納可能な有効な値を表示します。

リスト

  • ?list() リストは異なる型のデータを格納するためのデータ構造です。

行列

  • ?matrix() 行列は2次元データを格納するためのデータ構造です。

データフレーム

  • ?data.frame は重要なデータ構造で、listvectors です。
  • cbind() はデータフレームに列(ベクトル)を追加します。
  • rbind() はデータフレームに行(リスト)を追加します。

データ構造を調べるための便利な関数:

  • ?str 構造を表示し、データ構造全体の概要を出力します。
  • ?typeof 原子ベクトルの型を返します。
  • ?class データ構造の種類を返します。
  • ?head 最初の n 要素(2次元オブジェクトの場合は行)を表示します。
  • ?tail 最後の n 要素(2次元オブジェクトの場合は行)を表示します。
  • ?rownames, ?colnames, ?dimnames オブジェクトの行名や列名を取得または変更します。
  • ?names 原子ベクトルやリスト(またはデータフレームの列)の名前を取得または変更します。
  • ?length 原子ベクトル内の要素数を取得します。
  • ?nrow, ?ncol, ?dim n次元オブジェクトの次元を取得します(原子ベクトルやリストには使用できません)。

データフレームの探索


  • read.csv を使用して、規則的な構造を持つデータを読み込みます。
    • sep 引数で区切り文字を指定します。
      • “,” はカンマ区切り
      • “\t” はタブ区切り
    • その他の引数:
      • header=TRUE ヘッダー行がある場合に指定します。

データの抽出


  • 要素へのアクセス方法:

    • インデックス
    • 名前
    • 論理ベクトル
  • [ シングルブラケット:

    • 単一の要素を抽出するか、ベクトルを部分選択します。
    • 例:x[1] はベクトル x の最初の項目を抽出します。
    • リストの単一要素を抽出します。返される値は別の list() です。
    • データフレームの列を抽出します。
  • [ を2つの引数とともに使用すると:

    • 行および/または列を抽出します。
      • 行列
      • データフレーム
      • 例:x[1,2] は1行2列目の値を抽出します。
      • 例:x[2,:] は2行目全体の値を抽出します。
  • [[ ダブルブラケットを使用してリストから項目を抽出します。

  • $ を使用して名前で列またはリスト要素にアクセスします。

  • 負のインデックスで要素をスキップします。

制御フロー


  • if 条件を使用して条件分岐を開始し、else if 条件で追加のテストを行い、else でデフォルトを提供します。
  • 条件分岐のブロック本体はインデントする必要があります。
  • == を使用して等値をテストします。
  • %in% は要素がベクトル内に存在するかを TRUE / FALSE で返します。
  • X && Y は X と Y の両方が TRUE の場合にのみ TRUE になります。
  • X || Y は X または Y、または両方が TRUE の場合に TRUE になります。
  • 0 は FALSE と見なされ、その他の数値は TRUE と見なされます。
  • 多次元データに対してネストループを使用します。

出版品質のグラフィックス作成


  • グラフィックスの文法を使用して図を作成します:
    • library(ggplot2)
    • ggplot で基礎となる図を作成します。
    • aesthetics を使用してデータ軸、形状、色、データサイズを指定します。
    • geometry 関数を使用してプロットの種類を指定します(例:point, line, density, box)。
    • geometry 関数は統計変換を追加することもできます(例:geom_smooth)。
    • scale 関数でデータから美学へのマッピングを変更します。
    • facet 関数で図をパネルに分割します。
    • aesthetics は個々のレイヤーに適用するか、ggplot 内で図全体に設定できます。
    • theme 関数で図の全体的な外観を変更します。
    • レイヤーの順序は重要です!
    • ggsave で図を保存します。

ベクトル化


  • ほとんどの関数と操作はベクトルの各要素に適用されます。
  • * は行列に対して要素ごとに適用されます。
  • %*% は真の行列乗算を行います。
  • any() はベクトル内のいずれかの要素が TRUE なら TRUE を返します。
  • all() はベクトル内のすべての要素が TRUE の場合にのみ TRUE を返します。

関数の解説


  • ?"function"
  • 頻繁に変更するパラメータを含むコードを関数に入れ、異なるパラメータ値で呼び出してその動作をカスタマイズします。
  • 関数の最後の行は返されるか、明示的に return を使用することができます。
  • 関数の本体に記述されたコードは、優先的に関数内で定義された変数を参照します。
  • 「なぜ」を文書化し、その後に「何を」、最後に「どのように」を記述します(コードが自明でない場合)。

データの書き出し


  • write.table を使用して、規則的な形式でオブジェクトを書き出します。
  • quote=FALSE を設定して、テキストが " で囲まれないようにします。

dplyr を使用したデータフレーム操作


  • library(dplyr)
  • ?select で名前による変数を抽出します。
  • ?filter で条件に一致する行を返します。
  • ?group_by で1つ以上の変数によってデータをグループ化します。
  • ?summarize で複数の値を単一の値に集約します。
  • ?mutate でデータフレームに新しい変数を追加します。
  • 操作を ?"%>%" パイプ演算子を使用して組み合わせます。

tidyr を使用したデータフレーム操作


  • library(tidyr)
  • ?pivot_longer でデータを wide 形式から long 形式に変換します。
  • ?pivot_wider でデータを long 形式から wide 形式に変換します。
  • ?separate で単一の値を複数の値に分割します。
  • ?unite で複数の値を単一の値に結合します。

knitr を使用したレポート作成


  • 再現可能なレポートの重要性
  • Markdown の基本
  • R コードチャンク
  • チャンクオプション
  • インライン R コード
  • その他の出力形式

良いコードを書くためのベストプラクティス


  • 防御的にプログラムを書く、つまりエラーが発生することを前提にし、エラーを検出するコードを記述します。
  • コード

を書く前にテストを書くことで、そのコードが何をするべきかを正確に判断します。 - デバッグする前にコードが何をするべきかを理解します。 - 毎回失敗させます。 - 素早く失敗させます。 - 一度に1つの変更を行い、その理由を明確にします。 - 自分が行ったことを記録します。 - 謙虚であることを心がけます。

用語集


引数
関数やプログラムを実行する際に渡される値。 パラメータ と同義で使われることもあるが、一貫性がない場合もある。
代入
変数に値を関連付けて名前を与えること。
本体
(関数の)関数が実行される際に実行される文。
コメント
プログラム内で、人間が理解しやすいように意図された説明文。 コンピュータには無視される。 Python、R、Unix シェルでは # 文字から行末までがコメントとされる。 SQL では -- から始まり、他の言語では異なる記法がある。
カンマ区切り値
(CSV) テーブルを表す一般的なテキスト形式で、各行の値がカンマで区切られている。
区切り文字
個々の値を区切るために使用される文字または文字列。 CSV ファイルの列間を区切るカンマなど。
ドキュメント
ソフトウェアが何をするか、どのように動作するか、またはどのように使用するかを説明する人間向けのテキスト。
浮動小数点数
小数部と指数部を持つ数値。 関連項目: 整数
for ループ
セット、リスト、または範囲内の各値について1回ずつ実行されるループ。 関連項目: while ループ
インデックス
集合内の単一値(例: 画像の1ピクセル)の位置を指定する添え字。
整数
整数値(例: -12343)。 関連項目: 浮動小数点数
ライブラリ
R において、パッケージ が格納されているディレクトリ。
パッケージ
明確に定義された形式で構成された R の関数、データ、コンパイル済みコードのコレクション。 ライブラリ に格納され、library() 関数を使用して読み込まれる。
パラメータ
関数の宣言内で名前が付けられ、呼び出しで渡された値を保持するために使用される変数。 引数 と同義で使われることもあるが、一貫性がない場合もある。
return 文
関数の実行を即座に停止し、呼び出し元に値を返す文。
シーケンス
特定の順序で提示される情報の集合。
形状
配列の次元をベクトルで表したもの。 たとえば、5×3 の配列の形状は (5,3) と表される。
文字列
“character string” の略で、0 個以上の文字のシーケンス
構文エラー
文の順序や使用された文字がプログラミング言語で予期されていない場合に発生するエラー。
プログラム内の変数の内容などの分類(例: 浮動小数点数整数文字列 など)。 R では typeof() コマンドで変数の型を確認できる。
while ループ
条件が真である間、繰り返し実行されるループ。 関連項目: for ループ