第2回:R入門(2)

https://data-science-chiba-2024.github.io/day2/

クイズ

注意:質問は複数選択です。すべての正しい答えを選択してください。

あるいは、gosocrative.com で joho2024を入力

アウトライン

  • R入門(2): Rの基本的な要素を学ぶ
    • ベクトル
    • データ型
    • 関数
    • パッケージ

コメントについて

  • #の後に書いた文は「コメント」です
  • Rはコメントを無視するので、何を書いてもエラーになりません
  • 自分用のメモとして使う
    • 日本語で書いても大丈夫
# これはコメントです
# 3 % 9
3 * 9
[1] 27

宿題のした線について

宿題にこのようなところがあります:

# 計算
y <- ____
# 計算結果の確認
y
  • ____消してから、コードを書いてください
    • 下線が残っているとエラーになってしまいます

ベクトルについて

  • 今までは、数を一つずつ扱ってきた(4 + 5 など)
  • しかし、Rでは一気に複数の数を扱うことができます
  • 例えば、1から10までの数:
1:10
 [1]  1  2  3  4  5  6  7  8  9 10
  • このようなデータの集まりを「ベクトル」と呼びます
    • ベクトル:一連のデータの集まり

ベクトルについて

  • 1から10までの数をオブジェクトに保存すれば、今度はそれを使って様々な計算ができます
  • 例えば、一気に全ての値を2で割る:
x <- 1:10

x / 2
 [1] 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0

ベクトルについて

  • もう一つのベクトルの作り方があります:c
    • ccombine(結合する)という意味
c(1, 2, 3)
[1] 1 2 3

チャレンジ

  • 40から50までのベクトルを作る

  • 40, 42, 46 を含むベクトルを作る

データ型について

  • 今までは数(数字)しか扱ってきませんでしたが、Rには他のデータの種類もあります
    • データ型と呼びます
  • 文字データ:
menu <- c("ramen", "edamame", "gyoza")
menu
[1] "ramen"   "edamame" "gyoza"  
  • 文字は必ず " で囲まないといけません

データ型について

  • 論理データ:
coin_flip <- c(TRUE, FALSE, TRUE)
coin_flip
[1]  TRUE FALSE  TRUE
  • 論理データは TRUE または FALSE しかありません。また、 " を使いません。
  • 論理データは値の比較によく使います:
ages <- c(19, 40, 21)

ages > 20
[1] FALSE  TRUE  TRUE

データ型について

  • あるベクトルには一つのデータ型しか持てません。
    • 異なるデータ型を結合すると、強制的に同じになります。
c("ramen", "gyoza", 10, 11)
[1] "ramen" "gyoza" "10"    "11"   
  • " は文字を表します。つまり、Rにとって "10" は数ではなく、文字です。

データ型について

  • データ型を確認したい時には typeof() を使います
menu
[1] "ramen"   "edamame" "gyoza"  
typeof(menu)
[1] "character"
coin_flip
[1]  TRUE FALSE  TRUE
typeof(coin_flip)
[1] "logical"
ages
[1] 19 40 21
typeof(ages)
[1] "double"
  • Rでは、“double” は「数値」という意味を持っています。

この授業で扱う主なRのデータ型:

  • 文字(character)
  • 論理(logical)
  • 数字(numeric, “double”)

データ型が大事な理由

  • データ型が一致していないと、エラーになってしまうことがあります。
10 + "20"
Error in 10 + "20": non-numeric argument to binary operator
  • 特に外部からデータを読み込んだ際、予想と違ったデータ型になってしまうことがあります。

チャレンジ

以下のコードを実行すると、結果のデータ型はどれでしょうか?

c(19, 21, 40, TRUE, TRUE, FALSE)


c(menu, ages)

関数とは

何かの値(インプット)を受けて、処理し、計算結果(アウトプット)を返すもの

関数とは

関数の書き方:

  • 関数名(入力)
    • 必ず関数名を書いた後に、入力を括弧の中に書きます

例えば、sum() は数の合計を計算する関数です:

ages
[1] 19 40 21
sum(ages)
[1] 80

関数とは

  • round() は少数を四捨五入する関数です:
pi
[1] 3.141593
round(pi)
[1] 3
  • (Rには pi 𝜋 が元々含まれています)

ヘルプファイル

関数の使い方を確認したい時は ?関数名 と入力して、ヘルプファイルを参照します

?round

引数について

  • ヘルプファイルの中に、こう書いてあります:
round(x, digits = 0, ...)
  • xdigits引数 の名前です
    • 引数とは、関数の 入力や設定 のことです
      • x: 四捨五入する数値
      • digits: 残す小数の桁数の指定
    • 引数が複数ある場合は、必ず , で区切ります
    • (... は上級な話なので、この授業では扱いません)

引数について

つまり、さっきは

round(pi)

と書きましたが、

round(x = pi)
[1] 3

とでも書けるわけです。

引数について

  • ヘルプファイルでは、digits = 0 と書いてあります
    • これは、デフォルトの設定では残す小数の桁数はゼロ、という意味です
round(x = pi, digits = 0)
[1] 3
  • 異なる数を設定することもできます:
round(x = pi, digits = 2)
[1] 3.14
  • しかし、x のデフォルト設定がないので、x を指定しないとエラーになってしまいます:
round(digits = 2)
Error in eval(expr, envir, enclos): argument "x" is missing, with no default
  • つまり、round() にとって、x は必須です
    • digits は任意です
  • Rは引数を 名前 からでも、 位置 からでも認識できます

  • round() の最初の引数が x、その次が digits なので、このようにも書けます:

round(pi, 2)
[1] 3.14
  • あるいは、名前を使えば、位置を変えることができます:
round(digits = 2, x = pi)
[1] 3.14
  • おすすめは、任意の引数名を使うことです:
round(pi, digits = 2)
[1] 3.14

チャレンジ

  • sort() は入力を並び替える関数です。
    • 引数は x(ベクトル)と decreasing(論理)

今まで扱ったデータを以下のように並び替えてください:

  1. ages を小さい順から大きい順に
  2. ages を大きい順から小さい順に
  3. menu をAからZまでの順に
  4. menu をZからAまでの順に

パッケージとは

  • Rパッケージとは、Rができることを大幅に増やす「追加」のソフト(関数のまとまり)です
    • 現在、2万近くのパッケージがあります!

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

Rパッケージのインストールを行うには、install.packages() を使います:

install.packages("ggplot2")

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

  • 一度インストールしたら、次回からはインストールする必要はありません*

  • パッケージをアップデートしたい時に再インストールすれば良い

  • パッケージのインストールしただけでは、まだ使える状態になっていません

パッケージのロード

  • パッケージをインストールしたら、使える状態にするためにロードする必要があります

library() 関数でロードします:

library(ggplot2)

install.packages()library()の違い

  • install.packages() は一度だけで良いです(パソコンにパッケージをダウンロードします)*

  • library() はRを使うたびに実行する必要があります(パッケージを現在のRセッションで使用可能にします)

  • install.packages() はパッケージ名を引用符で囲む

  • library はパッケージ名を引用符で囲まない

チャレンジ

  • emojiというパッケージをインストールしてから、ロードしてください
  • emoji("smile")というコマンドを実行してください

tidyverse

  • tidyverse はデータサイエンス用パッケージの集まりです
    • ggplot2(可視化)
    • dplyr(データの整理)
    • stringr(文字データを扱う)
    • など

これからよく使うので、インストールとロードをしましょう。

install.packages("tidyverse")
library(tidyverse)

(実は、tidyverse は教室のパソコンに既にインストールされているのでインストールは不要ですが、自分のパソコンを使用している場合は必要です)

情報処理演習室の注意点

install.packages() は一度だけで良い

と説明しましたが、この教室のパソコンからログアウトするとパッケージを含むあなたのデータが全て消去されてしまいます

そのため、この教室のパソコンに新しくインストールするパッケージは毎回インストールが必要です。

連絡事項

  • 来週(10月15日)は休みです

  • 次回は10月22日です