【R講座】Rの基本操作と基礎知識

R

研究室に配属されたばかりの新入生や、これからRで統計分析を始めたいと思っている方へ向けて、【R講座】では、RとRStudioの基本的な使い方から統計手法の選び方、基本的なデータ分析方法を解説しています。特にRが初めての方でも安心して学べるように、RStudioのクリック操作も紹介していきます。実際のコード例を交えながら進めるので、これからの研究やデータ分析に、役立てていただけたら嬉しいです。

みなさん、こんにちは!

前回のR講座では、RとRStudioのインストール方法について解説しました。

【R講座】RとRStudioのインストールと初期設定
RとRStudioのインストールから初期設定を初心者向けに解説します。統計分析やデータの見える化が簡単にできるツールのインストール方法から初期設定までわかりやすく紹介します。


今回は、実際にRStudioを使って、インストールしたRStudioを使って、起動終了・ヘルプの見方から、演算子を使った計算やRのデータ型、文字列の操作など、Rの基本操作と重要な基礎知識について解説していきます。

今回の内容
  • RとRStudioの基本操作
  • Rで使う関数の構造や演算子
  • 文字列データの操作
  • パッケージとライブラリの活用

終了

アプリケーションを終了するには、次のいずれかの方法を使用します。

  • ウィンドウ右上(または左上)のバツ印をクリックする
  • 以下のコマンドを実行する
# アプリケーションの終了
q() # もしくは、quit()

関数(コマンド)

Rには多くの関数があり、これらの関数を利用することで作業を行なっていきます。関数の基本構造は以下のようになります。

関数の構造

関数名(引数1, 引数2,...)

  • 関数名の後ろには括弧()がついています。
  • その中に、関数ごとに必要な値引数ひきすうを入れ、カンマ(,で区切ります。
  • 関数の使い方や引数のリストはヘルプに記載されています。

エクセルを使ったことがある人なら、馴染みある構造だと思います。

オブジェクト

Rでは、Rが作成または操作するすべての実体を「オブジェクト」(object)と呼びます。
たとえば、次のものがオブジェクトに該当します。

オブジェクトに入れるもの
  • 変数
  • 文字列
  • 配列やデータフレーム
  • 関数

オブジェクト」と聞いて難しく感じるかもしれませんが、要は「変数や数値、データなどを入れておく」くらいに考えれば大丈夫です。

オブジェクトの代入演算子

オブジェクトには名前をつけて値を代入できます。これは一般的なプログラミング言語における「変数への値の代入」と同じです。

代入は次の演算子を使用して行います。

演算子説明
<-標準の代入x <- 5
->後置型の代入10 -> y
=C言語やJavaと同じ代入方法z = 20

Rでは代入に <- が推奨されています。= は関数の引数指定にも使われるため、混乱を避けるために <- を使う方が無難です。

代入の演算子 <- と数字の間にはスペースを開けておくと良いでしょう。
例えば、比較式x < -1 」(x-1 より小さい)と入力したいときに、演算子と数字の間にスペースを入れずに「x<-1」とすると、オブジェクト「 x 」に1が代入されてしまいます。

オブジェクトの代入(付値)

オブジェクトには名前をつけて値を代入できます。これは一般的なプログラミング言語における「変数への値の代入」と同じです。

# オブジェクトの代入
x <- 5  # x に値 5 を代入
y <- 10  # y に値 10 を代入
z <- 20 # z に値 20 を代入

# オブジェクトを使った計算
x + y  # 結果は 15

Rでは特定の名前は予約語(キーワード)として処理に使用されているため、オブジェクト名として使用できません。

  • break
  • else
  • for
  • function
  • if
  • in
  • next
  • repeat
  • return
  • while

数字で始まる名前もオブジェクト名として使用出来ません。

value2 <- 10 
2value <- 10

オブジェクトの確認と削除

オブジェクトの確認

Rの現在の環境に含まれているオブジェクトを確認するには、objects()関数またはls()関数を使用します。

# 環境内のオブジェクトの確認
objects() # もしくは、ls()

また、オブジェクト名をコンソールに打ち込むことで、オブジェクトの中身を確認できます。

# オブジェクトの中身を確認
x
y
z
[1] 5
[1] 10
[1] 20
オブジェクトの削除

オブジェクトを削除するときは、rm()関数を使います。

# オブジェクトの削除
rm(x) # xを削除
rm(y, z) # yとzを削除
# オブジェクトの全削除
rm(list = objects()) # もしくは、rm(list = ls())

RStudioでは、右上ペインの「Environment」タブでオブジェクトを確認できます。

また、箒のアイコンでオブジェクトの全削除ができます。

コメント

入力したコマンドの意味などをメモしたいときは、# を使います。

# 以下の文字列は無視されるので、そこにコメントを書き込みます。

# コメントの書き込み
print("Hello World") # このコードは"Hello World"と表示します

あまり使わないコードは時間が経つと忘れがちで、他人にも理解しづらくなるため、可読性を高めるためにも簡潔なコメントを残すといいでしょう。

履歴

前に使ったコマンドを再使用したいときは、コンソールペイン上でキーボードの上下の矢印キーを使います。

RStudioでは、右上ペインの「History」タブで履歴を確認できます。再使用したいコマンドをクリックするとコンソールペインに表示されます。

また、箒のアイコンで履歴の全削除ができます。

関数のヘルプを見たい場合は、次のコマンドを使用します。

# 関数「print()」のヘルプを表示
help(print)
# または、
?print

コマンドを入力すると、RStudioでは、右下ペインの「Help」タブに関数のヘルプが表示されます。

forin などの予約語や特殊文字のヘルプを参照する場合は、" "で囲む必要があります。

インターネットには多くの解説があるので、ヘルプを見てもわからない場合はインターネットを検索してみましょう。
日本語で検索して見つからないときは、英語で検索すると見つかることがあります。

作業ディレクトリの設定

ファイルからデータやプログラムを読み込んだり,ファイルにデータを書き出したりする場所を作業ディレクトリといいいます。

ディレクトリの確認

現在のディレクトリの確認は次のように行います。

# 現在のディレクトリを確認
getwd()
[1] "/Users/Username/R"
ディレクトリの変更

起動時はホームディレクトリ( Rの実行ファイルがある場所) が作業ディレクトリとなっていますが,変更する場合は以下のようなコマンドを実行します。

# ディレクトリの設定
setwd("/Users/Username/R") # 架空のディレクトリ

RStudioのホームディレクトリの変更は以下の手順で行います。

  1. 「Tools」 → 「Global Options…」をクリックします。
  2. 「General」ウィンドウの「Basic」タブに移動します。
  3. 「Default working directory」横にある「Browse…」ボタンをクリックし、希望するディレクトリを選択します。
  4. ディレクトリ選択後、「Apply」を押して設定を適用します。

Rの計算と演算子

Rは関数と演算子を使って計算を行なっていきます。
ここでは基本的な演算子や演算記号、数学関数などを紹介します。

基本的な計算

演算子説明結果
+加算3 + 2[1] 5
-減算5 - 1[1] 4
*乗算4 * 2[1] 8
/除算8 / 2[1] 4
^累乗3 ^ 2[1] 9
%%剰余5 %% 2[1] 1

数学関数で計算

関数説明結果
sin()正弦sin(pi / 2)[1] 1
cos()余弦cos(pi)[1] -1
tan()正接tan(pi / 4)[1] 1
sinh()双曲線正弦sinh(1)[1] 1.175
cosh()双曲線余弦cosh(1)[1] 1.543
tanh()双曲線正接tanh(1)[1] 0.762
asin()逆正弦asin(1)[1] 1.571
acos()逆余弦acos(0)[1] 1.571
atan()逆正接atan(1)[1] 0.785
asinh()逆双曲線正弦asinh(1)[1] 0.881
acosh()逆双曲線余弦acosh(2)[1] 1.317
atanh()逆双曲線正接atanh(0.5)[1] 0.549
log()自然対数log(10)[1] 2.303
log10()常用対数log10(1000)[1] 3
log2()底が2の対数log2(8)[1] 3
log1p()log(1 + x) の計算log1p(0.5)[1] 0.405
exp()e の累乗exp(1)[1] 2.718
expm1()exp(x) - 1 の計算expm1(1)[1] 1.718
sqrt()平方根sqrt(16)[1] 4
round()四捨五入round(3.14)[1] 3
trunc()整数部分のみtrunc(3.99)[1] 3
floor()小数点以下切り捨てfloor(3.99)[1] 3
ceiling()小数点以下切り上げceiling(3.01)[1] 4
signif()有効桁数で丸めるsignif(3.14159, 3)[1] 3.14

論理・比較演算子

演算子説明結果
==等しい3 == 3[1] TRUE
!否定!FALSE[1] TRUE
!=等しくない3 != 4[1] TRUE
>大きい5 > 3[1] TRUE
<小さい3 < 5[1] TRUE
>=大きいか等しい5 >= 3[1] TRUE
<=小さいか等しい3 <= 5[1] TRUE
&AND
(2つの式の両方が TRUE の場合にのみ TRUE を返します。)
TRUE & TRUE[1] TRUE
&&AND
(ベクトルの全要素に対してANDを評価します。)
TRUE && TRUE[1] TRUE
|OR
(ベクトルの全要素に対してORを評価します。)
TRUE | FALSE[1] TRUE
||OR
(2つの式のうち少なくとも1つが TRUE の場合に TRUE を返します。)
TRUE || FALSE[1] TRUE
xor() 排他的論理和
(2つの論理値が異なる場合に TRUE を返します。)
xor(TRUE, FALSE)[1] TRUE

その他の演算記号

記号用途
;
(セミコロン)
コマンドの区切り
(1行に2つのコードを書ける)
:
(コロン)
公差±1の数列を作る
%*%行列積
%o%外積 (関数outerと同じ)
[ ]ベクトル、行列の要素の取り出し
[[ ]]リストの成分の取り出し
$リストの成分の取り出し
|>左側のコードを右側の関数の第一引数に入れる
改行せずにコードを2つ書き込む
# セミコロンを使って1行に2つのコードを書き込む
print("abc"); print("def")
[1] "abc"
[1] "def"
公差±1の数列を作成する
# 公差±1の数列
1:5
5:1 # 逆向きもOK
[1] 1 2 3 4 5
[1] 5 4 3 2 1 # 逆向きの場合
行列積の計算
# 行列積
a <- matrix(1:4, nrow = 2)
b <- matrix(5:8, nrow = 2)
a %*% b
     [,1] [,2]
[1,]   23   31
[2,]   34   46
外積の計算
# 外積
c(1, 2) %o% c(3, 4) 
# もしくは、outer(c(1, 2), c(3, 4), "*")
     [,1] [,2]
[1,]    3    4
[2,]    6    8

外積の %o%o はアルファベットの o です。

ベクトル、行列の要素の取り出し
# []を使ってベクトルの要素の取り出し
x <- c(10, 20, 30, 40)
x[2]
[1] 20
# []を使って行列の要素の取り出し
m <- matrix(1:9, nrow = 3, byrow = TRUE)
m[2, 3]
[1] 6
  • Rではインデックスが 1 から始まるので x[2] はオブジェクト「x」の2番目の要素を指します。
  • 行列の場合は [○行目, ○列目] の順で要素を指定します。
# 行列 m の中身

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
リストの成分の取り出し
# [[]](二重角括弧)を使って要素の取り出し
lst <- list(a = 1:3, b = "hello")
lst[[1]] 

# lst$aも同じ結果になります
[1] 1 2 3

角括弧が一つの場合は、リスト名aも同時に出力されます。

lst[1]
$a
[1] 1 2 3
パイプ演算子の利用
# パイプ演算子
"abc" |> print() # print("abc")と同じです
[1] "abc"

dplyrパッケージ %>% も同じ機能を持ちます。

Rでは、これ以外にもたくさんの演算子や演算記号が用意されています。初めて触れる方は、「こんなこともできるんだ」と気軽に眺める程度で十分です。使っていると自然に覚えられると思います。

Rのデータ型

Rにはさまざまなデータ型があります。データ処理や分析に欠かせない要素なので、以下に主要なデータ型を紹介します。

データ型説明入力例結果備考
空オブジェクト
(NULL)
値なしx <- c()NULL初期値や属性の削除に使用
欠損値
(NA)
データの欠けNA[1] NA集計や分析時に注意
非数
(NaN)
数値表現不可のとき0/0[1] NaN計算エラー時に発生
無限大
(Inf)
無限値1/0[1] Inf正負無限大に対応
実数
(numeric)
数値データ1.25e3[1] 1250科学記法も対応
整数型
(integer)
整数型データ10L[1] 10Lをつけることで明示的に整数型を指定
複素数
(complex)
実部と虚部を持つ数1 + 1i[1] 1+1i虚数は i で表現
文字列
(character)
テキスト"abc"[1] "abc"ダブル/シングルクオートで囲む
論理値
(logical)
真偽TRUE[1] TRUET / F も使用可能 (推奨外)
Factor型
(Factor)
カテゴリデータfactor(c("A", "B"))[1] A B
Levels: A B
統計解析やグループ化処理を効率化
日付型
(Date)
年月日as.Date("1999-12-31")[1] "1999-12-31"characterFactor型とは異なる処理

RStudioでは右上ペインの「Environmet」タブからデータ型を確認できます。

関数の引数によってはデータ型の指定が必要な場合があるため、頭の片隅に置いておくとスムーズにコードを書く助けになります。

文字列の操作

いきなり文字列の操作するのかと思われるかもしれませんが、Rではパスやディレクトリの設定などに文字列を使うため、基本的な操作方法を紹介します。

文字列の基本

文字列はダブルクオート " " またはシングルクオート ' ' で囲みます。

# ダブルクオートで囲む
"abc" 

# シングルクオートで囲む場合は'abc'
[1] "abc"

タブスペース・改行・引用符

文字列にタブスペースや改行、引用符を挿入するときは「 \ 」を使用します。

タブスペース
# タブスペース
cat("abc\tdef")
abc	def
改行
# 改行
cat("abc\ndef")
abc
def
引用符
# ダブルクオート(\"で挟む)
cat("ab\"cd\"ef")
ab"cd"ef

cat()関数は文字列や数値などを連結して、コンソールに直接出力する関数です。

\ を単体で使用するとエラーが表示されます。

文字列の結合

paste()関数を使って複数の文字列を結合します。

# AとBCを結合する
paste("A", "BC")
[1] "A BC"

引数のsep = " "collapse = " "を変更することで、間に挟む文字の変更や一つに文字列に結合などができます。

文字列の長さ

nchar()関数を使って各文字列要素の長さを返します。

# 文字列の長さを数える
nchar("abcdefg")
[1] 7

部分文字列の抽出

substring()関数を使います。この関数はsubstring(文字列, 開始位置, 終了位置)の引数で文字列を抽出します。

substring("abcdefg", 2, 5)
[1] "bcde"

ここでは、次のポイントを押さえておきましょう。

  • 文字列は" "(もしくは'')で囲む
  • \nで改行できる
  • paste()関数で文字の結合ができる

パッケージとライブラリ

Rでは、関数やデータを機能別に分類し、パッケージとしてライブラリ形式で提供しています。必要に応じてパッケージのインストールや起動を行いましょう。

標準パッケージ

次のパッケージは標準搭載されているのものです。

パッケージ名説明
baseR の基礎パッケージ
bootブートストラップに関するR (S-Plus) の関数
classClassification に関する関数
clusterクラスター分析用関数
ctest古典的検定用関数
eda探索的データ分析
foreignR 以外の統計ソフト(SASなど)で作成されたデータファイルからデータを読むパッケージ
gridグリッド・グラフィックス・パッケージ
KernSmoothカーネル関数による密度推定用関数
latticeラティス・グラフィックス関数
lqsResistant 回帰と共分散推定
MASSMain Library of Venables と Ripley’s MASS に関する関数
methods形式的なメソッドとクラス
mgcv多変量平滑化パラメータ推定(GCV, GAM)
modreg平滑化と局所的回帰
mva古典的多変量回帰
nlme線形・非線形の混合結果モデル
nls非線形回帰
nnetフィード・フォワード・ニューラル・ネットおよび多項式の対数線形モデル
rpart再起分割
spatialクリギングと点パターン解析
splinesスプライン回帰
stepfun経験分布を含む階段関数
survivalペナルティ尤度を含む生存時間解析
tcltkTcl/Tk へのインターフェース
toolsパッケージ開発と管理用ツール
ts時系列解析に関する関数

拡張パッケージのインストール

標準パッケージの他に、たくさんの便利なパッケージがRでは提供されています。次の方法でインストールを行います。パッケージ名を任意のものに書き換えて使ってください。

# パッケージのインストール
install.packages("パッケージ名")

RStudioでは右下ペインの「Packages」タブにある「Install」ボタンをクリックします。

すると次のポップアップウィンドウが開くので、任意のパッケージ名を入力して、「Install」ボタンをクリックします。

パッケージの読み込み

標準パッケージ(例:base)はそのまま利用できますが、その他のパッケージを使うには以下のコマンドで読み込みます。

# パッケージの読み込み
library(パッケージ名)

RStudioでは右下ペインの「Packages」タブにあるリストにチェックを入れると、読み込まれます。

パッケージのヘルプ

パッケージのヘルプを参照するには、次のコマンドを入力します。

# パッケージのヘルプ
library(help = "パッケージ名")

パッケージのインストールと読み込みでは次のポイントに注意です。

デフォルトでは、パッケージのインストール時に 
install.packages("パッケージ名") 
のように ダブルクオーテーション を使うのに対し、読み込み時は 
library(パッケージ名) 
と クオーテーションなし で書くため間違えやすい点に注意が必要です。

どうしても揃えたい時は、
library("パッケージ名", character.only = TRUE) 

とすることで、インストールと同じ形式でパッケージを読み込むことができます。

まとめ

まとめ
  • RとRStudioの基本操作
    • 起動・終了方法
    • コメント・履歴・ヘルプの見方
    • オブジェクト作成と操作
    • 作業ディレクトリの確認・変更
  • Rで使う関数の構造や演算子
    • 算術演算と数学関数を使った計算
    • 論理演算子と比較演算子
  • Rのデータ型と文字列データの操作
  • パッケージとライブラリの活用

今回は、RStudioを使って、起動終了・ヘルプの見方から、演算子を使った計算やRのデータ型、文字列の操作など、Rの基本操作について紹介しました。

項目がかなり多くなってしまいましたが、使っているうちに覚えていくものばかりなので、まずは「こんな機能があるんだ」という程度の理解から始めましょう。

次回は、関数を使って基本統計量の計算する方法について紹介します。

タイトルとURLをコピーしました