R言語による医療データ分析

R言語によるデータ分析のオンラインコースを中心に、さまざまなデータ分析について記載してあります。

015-016 ベクトル(S2)

まとめ一覧

データの行と列

f:id:tentencon:20191217174012j:plain<figcaptio
f:id:tentencon:20191217174042j:plain
col
n>row

行方向と、列方向では、どちらのデータが「型」の予測がつきやすいでしよう?

f:id:tentencon:20191217174126j:plain
row

f:id:tentencon:20191217174214j:plain

ベクトル

f:id:tentencon:20191217174257j:plain
vector

  • 数学のベクトルと違い、縦や横の概念はありません。しかし、「全て同じ型」である必要があるので、コラム方向でのイメージができると、後々役立ちます。

データフレーム

f:id:tentencon:20191217174321j:plain
df

ベクトルの作成

#ベクトルをつくるには、「combine(くっつける)」の頭文字である、c()を使います。

#例:
c(1,2,3,4,5)

#ベクトルは変数に収納することもできます。

a <- c(1,2,3,4,5)
a

#文字列をいれてみましょう
a <- c("あ","い","う","え","お")
a <- c("1","2","3","4","5")

#数字型と文字列型を同時にベクトルに入れる事は「できません」
#実験:
a <- c(1,2,3,4,"あ")
a
# 文字列型が混ざっていると、環境画面でも表示されているように、
# a chr [1:5] "1" "2" "3" "4" "あ"
# と、全て文字列型に置き換わってしまいます。

ベクトルの型変換と四則演算

#縦方向のカラムのイメージを持っていますか?
a <- c(1,2,3,4,"あ")

a + 10 #を実行したらどうなるでしょうか?

#"1" + 2 を実行したらエラーが出るのと同じように、エラーです。

#数字へ変換しかた、覚えていますか?
a <- as.numeric(a)

# 環境画面で、a の横に、num [1:5] 1 2 3 4 5
# と表示されていますね。勝手に、全てのベクトル要素にas.numeric()が実行されました。
# 同様に、計算も、勝手に全ての要素に対して実行されます。

a + 10 # + は足し算
a * 5 # * はかけ算
a / 10 # / は割り算
a - 5  # - は引き算
a ** 2 # ** はXX乗

# 新しいベクトルを作ってみましょう
b <- c(10,11,12,13,14)

#これなら?
a + b 

#そうです、同じベクトル同士は、同じ位置同士での四則演算が可能です。
a + b
a * b
a - b
a / b
a ** b 

ベクトルの要素の長さが違う場合

#もし、ベクトル同士の計算で要素の長さが違ったら?
len_5 <- c(1,2,3,4,5)
len_10 <- c(10,20,30,40,50,60,70,80,90,100)

len_5 + len_10 

 #これは、
    # 1   2   3   4   5   1   2   3   4   5  <-len_5が2回繰り返し
    # 10  20  30  40  50  60  70  80  90  100 <-len_10が1回繰り返し

#と、短い方を、複数繰り返して、その繰り返しとの計算が行われます。

len_10 + len_5  #これも同じ結果になりますね。

#じつは、ただの数字も、長さ1のベクトルだと考えれば、
len_5 + 1
1 + len_5
 #も、長さ1のベクトルが5回繰り返されたものという風に考えられます。
    # 1 2 3 4 5   <- len_5 が1回
    # 1 1 1 1 1   <- 1が5回繰り替えされている。

#繰り返しの回数が丁度にならない場合も、
#一番長いベクトルが1回、それに帳尻を合わせるために、短いものが複数回
#繰り返されるとイメージできると良いです。(警告が出ますけどね)

len_3 <- c(1,2,3)
len_7 <- c(10,20,30,40,50,60,70)

len_3 + len_7
len_7 + len_3
  # -> 結果は、11 22 33 41 52 63 71    len_7の長さで7個の要素が結果に。
  #            1  2  3  1  2  3  1  2  3  len_3が3回繰り返し
  #            10 20 30 40 50 60 70       len_7が1回繰り返し

#このとき表示される警告(warning)メッセージは、
#In len_3 + len_7 :
#   longer object length is not a multiple of shorter object length

#longer object length:長い方のベクトルの要素数(長さ、kength)が、
#is not a multiple: 複数倍ではない(何に対して?)
#of shorter object length: 短い方のベクトルの要素数(長さ、length)が。

ベクトルのまとめ

  • ベクトルを作るには、c()を使う。
  • ベクトルは変数に収納可能。
  • ベクトルの要素は全て同じ型になる。
  • ベクトル同士の計算は同じ位置同士で「普通」に計算される。
  • ベクトル同士の長さが違うと、帳尻を合わせてくれるが、警告される。

f:id:tentencon:20191217174402j:plain

まとめ一覧