"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
seq(1, 5)
## [1] 1 2 3 4 5
seq(1, 10, 2)
## [1] 1 3 5 7 9
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
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
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)'를 갖고 있는 리스트를 반환한다.
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