[14-01-21]

3.3 벡터 연산

"a" %in% c("a", "b", "c")
## [1] TRUE
setdiff(c("a", "b", "c"), c("a", "d"))
## [1] "b" "c"
union(c("a", "b", "c"), c("a", "d"))
## [1] "a" "b" "c" "d"
intersect(c("a", "b", "c"), c("a", "d"))
## [1] "a"

벡터를 set으로 취급한다.
집합간 비교는 setequal()을 사용한다.

setequal(c("a", "b", "c"), c("a", "b"))
## [1] FALSE

3.4 seq

seq(1, 5)
## [1] 1 2 3 4 5
seq(1, 10, 2)
## [1] 1 3 5 7 9

3.5 rep

rep(1:2, 5)
##  [1] 1 2 1 2 1 2 1 2 1 2

이와 달리 1이 5회, 2가 5회 반복된 벡터를 만들기 위해서는 다음과 같이 하면 된다.

rep(1:2, each = 5)
##  [1] 1 1 1 1 1 2 2 2 2 2

4.리스트 (List)

4.1 리스트의 정의

x <- list(name = "foo", height = c(1, 3, 5))
x
## $name
## [1] "foo"
## 
## $height
## [1] 1 3 5

리스트 안에 리스트를 중첩하는 것이 가능하다.

list(a = list(val = c(1, 2, 3)), b = list(val = c(1, 2, 3, 4)))
## $a
## $a$val
## [1] 1 2 3
## 
## 
## $b
## $b$val
## [1] 1 2 3 4

4.2 리스트내 데이터 접근

x$name
## [1] "foo"
x$height
## [1] 1 3 5
x[[1]]
## [1] "foo"
x[[2]]
## [1] 1 3 5

[[인덱스]]의 형태가 아닌 [인덱스]형태는 각 값이 아니라 (키, 값)을 담고 있는 서브 리스트를 반환한다.

x[1]
## $name
## [1] "foo"
x[2]
## $height
## [1] 1 3 5

x[1]은 '(name, foo)'를 갖고 있는 리스트를 반환한다.

5. 행렬(matrix)

5.1 행렬의 정의

matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3)
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), ncol = 3)
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9

행렬값은 좌측 열부터 채워진다.
행렬값을 위쪽 행부터 채우고 싶다면 'byrow'를 사용한다.

matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3)
##      [,1] [,2] [,3]
## [1,]    1    4    7
## [2,]    2    5    8
## [3,]    3    6    9
matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow = 3, dimnames = list(c("item1", "item2", 
    "item3"), c("feature1", "feature2", "feature3")))
##       feature1 feature2 feature3
## item1        1        4        7
## item2        2        5        8
## item3        3        6        9