リファレンス
最終更新日: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複素数
- 
?logicalTRUE または FALSE の値
 特別な型: - 
?NA欠損値
- 
?NaN“数ではない” 値(例:0/0)。
- 
?Inf,-Inf無限大。
- 
?NULL存在しないデータ構造。
 NAは任意の原子ベクトルに含まれる可能性があります。NaNとInfは複素数、整数、または数値型のベクトルのみに含まれる可能性があります。原子ベクトルはすべての他のデータ構造の構成要素です。NULL値はデータ構造全体の代わりに発生します(ただしリスト要素として含まれる場合があります)。
- 
R の基本データ構造:
- 原子 ?vector(1種類のデータ型のみを含む)
- 
?list(他のオブジェクトのコンテナ)
- 
?data.frame異なる型のデータを含むことができる2次元オブジェクト
- 
?matrix1種類のデータ型のみを含むことができる2次元オブジェクト
- 
?factorあらかじめ定義されたカテゴリカルデータを含むベクトル
- 
?array1種類のデータ型のみを含む多次元オブジェクト
行列は実際には内部的に原子ベクトルであり、データフレームは内部的にリストであることを忘れないでください。これにより、R の一部の奇妙な動作を説明できます。
- 
?vector()ベクトル内のすべての要素は同じ型でなければなりません。
- 要素は型変換を使用して別の型に変換できます。
- 連結関数 c()はベクトルに要素を追加します。
- 
seq(from=0, to=1, by=1)は数値のシーケンスを作成します。
- ベクトル内の要素には names()関数を使用して名前を付けることができます。
- 
?factor()ファクターはカテゴリカルデータを格納するためのデータ構造です。
- 
levels()はファクター型のベクトルに格納可能な有効な値を表示します。
- 
?list()リストは異なる型のデータを格納するためのデータ構造です。
- 
?matrix()行列は2次元データを格納するためのデータ構造です。
- 
?data.frameは重要なデータ構造で、listのvectorsです。
- 
cbind()はデータフレームに列(ベクトル)を追加します。
- 
rbind()はデータフレームに行(リスト)を追加します。
データ構造を調べるための便利な関数:
- 
?str構造を表示し、データ構造全体の概要を出力します。
- 
?typeof原子ベクトルの型を返します。
- 
?classデータ構造の種類を返します。
- 
?head最初のn要素(2次元オブジェクトの場合は行)を表示します。
- 
?tail最後のn要素(2次元オブジェクトの場合は行)を表示します。
- 
?rownames,?colnames,?dimnamesオブジェクトの行名や列名を取得または変更します。
- 
?names原子ベクトルやリスト(またはデータフレームの列)の名前を取得または変更します。
- 
?length原子ベクトル内の要素数を取得します。
- 
?nrow,?ncol,?dimn次元オブジェクトの次元を取得します(原子ベクトルやリストには使用できません)。
データフレームの探索
- 
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 ループ。