はじめに
最近, R 言語を学び始めた. データ型について整理してみた.
Atomic Classes of Objects
R には 5 つのアトミックなオブジェクトがある.
- charactor
- numeric (real number)
- integer
- complex
- ligical (true/false)
Basic Objects
もっとも基本的なオブジェクトは vector.
vetor
c で vector を生成する.
a <- c (0.5, 0.6) # numeric
b <- c (TRUE, FALSE) # logial
c <- 0:5 # integer
d <- c ("a", "b", "c") #chalactor
型の混合も許す. tuple のような機能も併せ持つ.
a <- (1,7, "a")
b <- (TRUE, "a")
x <- 0:6
class (x)
integer
list
vector の特殊な形. 異なる型の vector を一つにまとめる.
x <- list (1, "a", TRUE, 1 + 4i)
x
1 a TRUE 1+4i
Matrices
次元の性質をもつ vector. matrix 関数で生成.
m <- matrix (nrow = 2, ncol = 3)
m
nil nil nil
nil nil nil
m <- matrix (1:6, nrow = 2, ncol = 3)
m
1 3 5
2 4 6
dim
dim 関数をつかうと vector に 次元の性質を与えることができる.
m <- 1:10
dim (m) <- c (2,5)
m
1 3 5 7 9
2 4 6 8 10
cbind-ing and rbind-ing
cbind, rbind を利用しても, vector から matrix を生成できる.
x <- 1:3
y <- 10:12
cbind (x, y)
1 10
2 11
3 12
rbind (x,y)
1 2 3
10 11 12
Factors
vector の特殊なかたち. categorical data を扱う.
integer vector について, それぞれの integer に label があるようなもの.
enum 列挙型 ともいえる.factor 関数で作成.
x <- factor (c ("yes", "no", "no", "yes", "no"), labels = c ("yes", "no"))
table (x)
yes 3
no 2
Data Frame
list の特殊なかたち. list の list.
-
list のなかのすべての list が同じ length をもつ必要がある.
-
list の中の list は column とみなされる.
-
list の中の各要素の番号は row とみなされる.
-
通常は, rad.table (), read.csv によって生成される.
-
data.matrix (x) によって matrix 型に変換できる.
x <- data.frame (foo = 1:4, bar = c (T,T,F,F))
1 TRUE
2 TRUE
3 FALSE
4 FALSE
names
オブジェクトには名前をつけることができる. 可読性を向上させる.
x <- 1:3
names (x) <- c ("foo", "bar", "norf")
x <- 1:3
names (x) <- c ("foo", "bar", "norf")
m <- matrix (1:4 nrow = 2, ncol = 2)
dimname (m) <- list (c ("a", "b"), c ("c", "d"))
Subsetting: 部分集合
サブセット (部分集合).
vector
x <- c ("a", "b", "c", "c", "d", "a")
x[1:4]
a
b
c
c
条件を指定して, 部分を抽出することができる.
x[x > "a"]
b
c
c
d
list
x <- list (foo = 1:4, bar = 0.6)
# index で指定
x[1]
# $で指定
x$bar
Marix
x <- matrix (1:6, 2, 3)
1 3 5
2 4 6
, を利用することで, 行や列だけを vector として抽出.
x[1,]
1
3
5
NA Values を取り除く
complete.cases で調べる.
x <- c (1, 2, NA, 4, NA, 5)
y <- c ("a", "b", NA, "d", NA, "f")
good <- complete.cases (x, y)
good
TRUE
TRUE
FALSE
TRUE
FALSE
TRUE
x[good]
Operations
vector
x <- 1:4, y <- 4:9
x + y
x * y
x / y
x <- matrix (1:4, 2, 2)
1 3
2 4
matrix
y <- matrix (rep (10, 4), 2, 2)
10 10
10 10
x * y
10 30
20 40