R 기초 두번째
두번째 시간입니다. 이번 시간에는 리스트와 메트릭스에 대해서 알아보겠습니다.
list에 대해 알아봅시다
list는 vector 처럼 여러 원소를 담을 수 있는 그릇인데, vector와 가장 큰 차이점은 여러가지 자료형 원소도 함께 담을 수 있다는 점입니다.
lst <- list(3.14, 'hello',TRUE)
lst
## [[1]]
## [1] 3.14
##
## [[2]]
## [1] "hello"
##
## [[3]]
## [1] TRUE
lst <- list('apple',c(1,2,3))
lst
## [[1]]
## [1] "apple"
##
## [[2]]
## [1] 1 2 3
벡터와 마찬가지로 이름을 설정할 수 있습니다.
names(lst) <- c('과일','벡터')
lst
#
#
#
#
#
아래와 같이 리스트를 생성하는 단계부터 각 원소에 이름을 붙일 수도 있습니다.
lst <- list(name ="apple", price =100, inventory = TRUE)
lst
#
#
#
#
#
#
#
#
lst <- list(name ="apple", price =100, inventory = TRUE)
lst$name
#
lst[[1]]
#
lst[1]
#
#
lst[c(1,3)]
#
#
#
#
#
class(lst[[1]])
#
class(lst[1])
#
lst <- list()
lst
#
lst[[1]] <- 100
lst[[2]] <- 'apple'
lst['inventory'] <- TRUE
lst
#
#
#
#
#
#
#
#
lst['inventory'] <- NULL
lst
Quiz
다음과 같은 lst가 있다.
lst <- list(1,2,3)
1)위 lst에 아래와 같이 벡터 (‘a’,‘b’,‘c’)를 추가
## [[1]]
## [1] 1
##
## [[2]]
## [1] 2
##
## [[3]]
## [1] 3
##
## [[4]]
## [1] "a" "b" "c"
2)lst 에서 1)에서 추가한 c(‘a’,‘b’,‘c’)를 제거
#
#
#
#
#
#
#
#
lst <-list(1,2,3,4,5)
mean(lst)
#
#
#
unlist(lst)
#
mean(unlist(lst))
#
cat('list element is : ', unlist(lst))
#
Quiz
다음 list의 평균, 최소, 최댓값 계산하시오
lst <-list(1,2,3,4,5)
#
#
#
Quiz
- 다음과 같은 score_lst 라는 이름의 리스트를 만들어라
#
#
#
#
#
- 만든 score_lst에 id ’1234’를 추가하여라
#
#
#
#
#
#
#
#
matrix에 대해 알아봅시다
matrix는 우리가 알고 있듯이 2차원의 데이터를 담을 수 있고, vector와 유사하게 같은 타입만 담을 수 있습니다.
matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9) , nrow =3, ncol=3)
#
#
#
#
vec <- c(1, 2, 3,
4, 5, 6,
7, 8, 9)
m <- matrix(vec, 3,3)
매트릭스도 벡터, 리스트와 마찬가지로 column, row 의 이름을 지정할 수 있습니다.
colnames(m) <- c('col1','col2','col3')
m
#
#
#
#
rownames(m)<- c('row1','row2','row3')
m['row1',]
#
#
matrix(0, 2, 3)
#
#
#
matrix(NA, 2, 3)
#
#
#
m <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9) , nrow =3, ncol=3)
m[,3]
#
m[1,2]
#
m[c(1,2), c(1,2)]
#
#
#
m <- matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9) , nrow =3, ncol=3)
m
#
#
#
#
colnames(m)
#
rownames(m)
#
colnames(m) <-c('col1','col2','col3')
rownames(m) <-c('item1','item2','item3')
m['item1',]
#
#
m[,'col2']
#
#
mat1 <- matrix(seq(1:9) , nrow =3)
mat1
#
#
#
#
mat1 * 2
#
#
#
#
mat1 - 1
#
#
#
#
mat2 <- matrix(1, 3,3)
mat2
#
#
#
#
mat1
#
#
#
#
mat1 + mat2
#
#
#
#
mat2 / mat1
#
#
#
#
mat1 * mat2
#
#
#
#
mat1 %*% mat2
#
#
#
#
mat1 <- matrix(seq(1:9) , nrow =3)
t(mat1)
#
#
#
#
ncol(mat1)
#
nrow(mat1)
#
dim(mat1)
#
Quiz
1)아래와 같은 matrix 2개를 각각 만들어라(변수명은 mat1, mat2)
#
#
#
#
#
#
#
- 두 행렬의 행렬곱은? (참고 : 두 행렬의 차원을 잘 맞춰야함)
#
#
#
- 두 행렬 곱으로 얻어진 mat3에 대해 첫번째 row만 선택
#
#
#
#
참고 : array에 대해 알아봅시다
array는 잘 사용되진 않습니다. 참고로 알아두시기 바랍니다. matrix와 비슷하지만 2차원 이상의 데이터를 표현할 수 있습니다.
array(1:12,dim=c(3,4))
#
#
#
#
array(1:12,dim=c(2,2,3))
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
arr<-array(1:12,dim=c(2,2,3))
dim(arr)
#
arr[1,1,]
#
arr[,,2]
#
#
#