Hazy Ideas

日々の勉強の気づきを書き出しています

R: 基本編

*個人用勉強メモです。

 

変数に数値などを代入、削除する。

assign("j", 4)

rm(j)      #remove(j)でも良い

 

Rには主に4つのデータ型がある。

numeric、character、Data/POSIXct、logical

 

数値numericは他言語におけるfloatやdouble。

整数のみにするときはintegerを使う、数字の次にLをつける必要あり

eg)  i <- 5L

 

文字データとしてcharactorとfactorがある。

factorには”(クオート)がつかない文字が保持される。

 

日付データはDate、日付と時間を保持するにはPOSIXct。

論理値logicalはTRUEかFALSEを表現する。

数値的にはTRUEは1、FALSEは0を意味する。

 

==:同じ値か

!=:異なる値か

<=:以下か

<:未満か

 

Rにはベクトルという型がある。c(1, 2, 3, 4)のように使う。

シンプルな入れ物であり且つ、Rにおいてはベクトル化された言語には自動的にループされる(便利らしい)。

ベクトルに次元はないので、縦横はない。以下例。

x <- c(1,2,3)

y <- c(4,5,6)

x + y

[1] 5, 6, 7

x * y 

[1] 4, 10, 18

 

factorとcharactorの違いはベクトルに現れる。

q <- c("A", "B", "C", "C","C", "D", "E","E")   #この時点ではcharactorのベクトル

qFactor <- as.factor(q)

qFactor

[1] A B C C C D E E
Levels: A B C D E

クオートがなくなり、重複のないレベルが加えられている。

factorは一意の値を保持するので、変数を減らすことができる。

 

欠損値にはNAとNULLがある。

NAはベクトルの要素になるが、NULLは本当に空になる。

 

パイプ:パッケージmagrittrから動かせる、演算子は%>%

 

その他のデータ構造にdata.frame、matrix、list、arrayがある。

data.frameはExcelと同じで、行と列をもつ。

 z <- c("Hello", "world", "Thanks")

DF <- data.frame(x,y,z)
DF
   x y z
1 1 4 Hello
2 2 5 world
3 3 6 Thanks

行列を持つのでそれぞれの名前を確認できる、colnames/rownames

これらは名前であり、データには含まれない。例えば、

colnames(DF) <- NULL

で 列名を消すことができる。

 

リストlistはオブジェクトの型に関係なく格納できる。

numericやcharactorだけでなく、data.frameやlist自身も含めることができる。

list()に入れた順番に表示される。

> list(1,2,3,4)
1
[1] 1

2
[1] 2

3
[1] 3

4
[1] 4

> list(c(1,2,3,4))
1
[1] 1 2 3 4

 

数学的構造としてmatrixがあるが、data.frameとの違いは、全列が同じ要素でなければいけないこと。(全部数値データのようなものでないとダメ)

> A <- matrix(1:10, nrow=5)
> A
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10

 

最後の方はarray、多次元のvectorを示す。

array内dimの数値は1つ目は行、2つ目は列、3つ目は残りの次元を表す。

> B <- array(1:8, dim=c(2,2,2))
> B
, , 1

[,1] [,2]
[1,] 1 3
[2,] 2 4

, , 2

[,1] [,2]
[1,] 5 7
[2,] 6 8