Dragon Arrow written by Tatsuya Nakaji, all rights reserved animated-dragon-image-0164

R 入門

イメージ
Aug 25, 2019

R 入門


目次

変数への代入基本的な計算
データ構造
・ベクトル行列データフレームリスト




変数の代入


代入では =(イコール)か <-, ->(矢印)を使う。

どちらを使っても構わない。

a=1 >  a=1
b=2 > b=2
a+b [1] 3
c <- 4
5 -> d
c+d < [1] 9


基本的な計算


a=1 >  a=1
b=2 > b=2
a+b # 足し算
a-b # 引き算
a*b # 掛け算
a/b # 割り算
a**b # べき乗
a^b # 同じくべき乗


データ構造


・ベクトル

ベクトルの生成

> x=1:5
> x
[1] 1 2 3 4 5
> y=c(1,3,5,7,9)
> y
[1] 1 3 5 7 9
> z=c("A","あ",1)
> z
[1] "A"  "あ" "1" 


ベクトルの四則演算

> x=1:5
> x
[1] 1 2 3 4 5
> y=c(1,2,1,2,1)
> y
[1] 1 2 1 2 1

足し算

> x+y
[1] 2 4 4 6 6


引き算

> x-y
[1] 0 0 2 2 4


掛け算

> x*y
[1] 1 4 3 8 5


べき乗

> x**y
[1] 1 4 3 16 5


割り算

> x/y
[1] 1 1 3 2 5


内積

> x%*%y
[,1]
[1,]   21


・行列

行列(matrux)の生成

> m=matrix(1:12,3,4) # 3行4列
> m
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

> n=matrix(2:13,3,4)
> n
     [,1] [,2] [,3] [,4]
[1,]    2    5    8   11
[2,]    3    6    9   12
[3,]    4    7   10   13


足し算

> m+n


引き算

> m-n
     [,1] [,2] [,3] [,4]
[1,]   -1   -1   -1   -1
[2,]   -1   -1   -1   -1
[3,]   -1   -1   -1   -1


掛け算

> m*n
     [,1] [,2] [,3] [,4]
[1,]    2   20   56  110
[2,]    6   30   72  132
[3,]   12   42   90  156


割り算

> m/n


・データフレーム

行列と見た目は似ているが、列ごとの変数の型(実数型や文字型)を別個に管理したい場合に用いる。


データフレームの生成

> X=data.frame(parson=c("C","C","D","D","D"), height=c(160,165,170,175,180),weight=c(50,65,60,55,70))
> x
[1] 1 2 3 4 5
> X
  parson height weight
1    C    160     50
2    C    165     65
3    D    170     60
4    D    175     55
5    D    180     70


データフレームを行列に変換

> Y=as.matrix(X)
> Y
     parson height weight
[1,] "C"  "160"  "50"  
[2,] "C"  "165"  "65"  
[3,] "D"  "170"  "60"  
[4,] "D"  "175"  "55"  
[5,] "D"  "180"  "70"  


オブジェクトの構造を表示する関数 str

> str(X)
'data.frame':    5 obs. of  3 variables:
 $ bird  : Factor w/ 2 levels "C","D": 1 1 2 2 2
 $ height: num  160 165 170 175 180
 $ weight: num  50 65 60 55 70


データフレーム型の行列への変換

> X=data.frame(A=1:5,B=2:6,C=3:7)
> X
  A B C
1 1 2 3
2 2 3 4
3 3 4 5
4 4 5 6
5 5 6 7
> Y=as.matrix(X)
> Y
     A B C
[1,] 1 2 3
[2,] 2 3 4
[3,] 3 4 5
[4,] 4 5 6
[5,] 5 6 7

> heatmap(X) # heatmap関数は行列しか受け付けないのでエラー
> heatmap(Y) # 正しく、ヒートマップが作成される


・リスト

自由にオブジェクトを並列格納させる機能

> a=list(1:5, matrix(1:12,3,4), data.frame(x=1:4, y=2:5))
> a
[[1]]
[1] 1 2 3 4 5

[[2]]
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

[[3]]
  x y
1 1 2
2 2 3
3 3 4
4 4 5


リストの1つ目を取り出す

> a[1] # または a[[1]]
[[1]]
[1] 1 2 3 4 5


リストの第1成分の2番目

> a[[1]][2]
[1] 2


リストの第2成分の2行3列目

> a[[2]][2,3]
[1] 8


リストの第3成分のx列を取り出す

> a[[3]]
  x y
1 1 2
2 2 3
3 3 4
4 4 5
> a[[3]]$x
[1] 1 2 3 4
> a[[3]]$y
[1] 2 3 4 5


リストの第3成分の2行目を取り出す

> a[[3]][2,]
  x y
2 2 3


データ構造確認

> class(a)
[1] "list"



以上!!