Rの文法再確認した

Rを復習した。
主に細かい挙動の確認です

代入
あ = 3 -> a
## あ = 3 , a = 3

日本語も変数として使用可
= と <- は同じ。 -> で逆方向に

イテレータ

for と while

for(i in リストのオブジェクト ){
    処理1
    処理2
}

for(i in リストのオブジェクト )
    処理

while(TRUE){}
    if(FALSE | TRUE) break
条件分岐
if (i in リストのオブジェクト ){
    処理1
    処理2
}

for(i in リストのオブジェクト )
    処理

nc = ifelse(na > nb, na, nb)

組み込み関数

any : 条件がTRUEかFALSEか

any(3>4) #FALSE


exists: その変数がNULLでないか

a = 3
exists("a") # TRUE
exists("b") # FALSE
exists("NULL") #FALSE

c : 配列

list = c(1,2,3)
list2 = c(1:15)

length() :配列長

length(0:15) # 16


cbind,rbind : 同じ長さの配列から行列を作成

> cbind(c(1,2,4),2:0)
     [,1] [,2]
[1,]    1    2
[2,]    2    1
[3,]    4    0
> rbind(c(1,2,4),2:0)
     [,1] [,2] [,3]
[1,]    1    2    4
[2,]    2    1    0

matrix : 行列

matrix(0,2,5)
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    0    0
[2,]    0    0    0    0    0

m[1,] <- c(1,3,4,5,6)
m[2,] <- c(5,3,6,1,4)
m[1,4] #-> 5

colnames(m) = c("A","B","C","D","E")
rownames(m) = c("alpha","beta")

      A B C D E
alpha 1 3 4 5 6
beta  5 3 6 1 4

データフレーム

df = data.frame(m)
as.data.frame(m)
      A B C D E
alpha 1 3 4 5 6
beta  5 3 6 1 4

データフレームと行列は相互に変換可能

array : 分割表

> array(1:30,c(3,4,2))
, , 1

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

, , 2

     [,1] [,2] [,3] [,4]
[1,]   13   16   19   22
[2,]   14   17   20   23
[3,]   15   18   21   24

class: 型チェック

> class(1)
[1] "numeric"
> class("1")
[1] "character"
> class(c(3,3))
[1] "numeric"
> class(m)
[1] "matrix"
> class(as.data.frame(m))
[1] "data.frame"
論理式

&
&&

xor(a,b)


もっと細かいのはしょう先生のブログを読みましょう
Rの言語仕様とか色々参考にできそうな関数とかのメモ - Seeking for my unique color.
オブジェクト指向についてはまだ謎が多いのであとで調べる。eval黒魔術でどうにかしようとしたけど、ちょっと無理だった。