R의 데이터 종류에는 스칼라, 벡터, 리스트, 행렬, 배열, 데이터 프레임이 있다. 이번 포스팅에는 리스트, 행렬, 배열을 알아보자.
[리스트]
리스트는 서로 다른 구조의 데이터를 모두 묶은 객체를 말한다. 리스트는 키, 값 형태의 데이터를 담는 연관 배열이다.
> a <- list(x=1:4,y=c("일","이","삼","사"))
> a$x
# [1] 1 2 3 4
> a[2]
#$y
#[1] "일" "이" "삼" "사"
> x[[2]]
#[1] "일" "이" "삼" "사"
- x$key : 리스트 x에서 키 값 key에 해당하는 값
- x[n] : 리스트 x에서 n번째 데이터의 서브리스트
- x[[n]] : 리스트 x에서 n번째에 저장된 값
[행렬(Matrix)]
행렬은 동일한 유형의 2차원 데이터구조이다.
matrix(벡터 값, nrow=행의 수, ncol=열의 수, byrow=T (행우선) or F(열우선) 데이터 채움, dimnames=행렬의 각 차원의 이름 저장)
x = matrix(1:6,nrow=3)
x
# [,1] [,2]
# [1,] 1 4
# [2,] 2 5
# [3,] 3 6
dimnames(x) <- list(c("r1","r2","r3"),c("c1","c2")) # 행렬의 각 차원의 이름 저장
x
# c1 c2
# r1 1 4
# r2 2 5
# r3 3 6
x = matrix(1:6,nrow=3, byrow = T) # 행우선으로 데이터를 채움
x
# [,1] [,2]
# [1,] 1 2
# [2,] 3 4
# [3,] 5 6
[행렬 데이터 접근]
m <- matrix(1:9, nrow = 3, byrow = T) # 행의 개수 지정하고 행 우선으로 자료를 채움
m
# [,1] [,2] [,3]
# [1,] 1 2 3
# [2,] 4 5 6
# [3,] 7 8 9
dim(m) # 3 3
m[1] # 1
m[1,] # 1 2 3, 1행이 나옴
m[,1] # 1 4 7
m[, -1]
# [,1] [,2]
# [1,] 2 3
# [2,] 5 6
# [3,] 8 9
m[-1, -1]
# [,1] [,2]
# [1,] 5 6
# [2,] 8 9
m[1,c(1,3)] # 1 3
rownames(m) <- c('r1','r2','r3')
colnames(m) <- c('하나','둘','셋')
m
# 하나 둘 셋
# r1 1 2 3
# r2 4 5 6
# r3 7 8 9
m['r1',]
# 하나 둘 셋
# 1 2 3
dim(m) # 3 3
length(m) # 9
NROW(m) # 행의 개수 확인 3
nrow(m) # 소문자도 가능
[행렬의 연산]
# 연산
a <- matrix(c(1,2,3,4),nrow=2,ncol=2)
a
# [,1] [,2]
# [1,] 1 3
# [2,] 2 4
b <- matrix(5:8 , 2, 2)
b
# [,1] [,2]
# [1,] 5 7
# [2,] 6 8
a + b
# [,1] [,2]
# [1,] 6 10
# [2,] 8 12
a - b
# [,1] [,2]
# [1,] -4 -4
# [2,] -4 -4
a / b
# [,1] [,2]
# [1,] 0.2000000 0.4285714
# [2,] 0.3333333 0.5000000
a * b
# [,1] [,2]
# [1,] 5 21
# [2,] 12 32
a %*% b # 행렬 곱셈
# [,1] [,2]
# [1,] 23 31
# [2,] 34 46
diag(a) # 대각 요소 값 추출 [1] 1 4
diag(3)
# [,1] [,2] [,3]
# [1,] 1 0 0
# [2,] 0 1 0
# [3,] 0 0 1
t(a) # 전치, 행렬전환
# [,1] [,2]
# [1,] 1 2
# [2,] 3 4
solve(a) # 역행렬
# [,1] [,2]
# [1,] -2 1.5
# [2,] 1 -0.5
solve(solve(a))
# [,1] [,2]
# [1,] 1 3
# [2,] 2 4
[배열]
동일한 유형의 N차원 데이터 구조이다. (행렬 : 2차원 데이터 구조, 배열 : N차원)
arr <- array(1:12, dim = c(3,2,2)) # 3행 2열 2면 구조의 배열
arr
# , , 1
#
# [,1] [,2]
# [1,] 1 4
# [2,] 2 5
# [3,] 3 6
#
# , , 2
#
# [,1] [,2]
# [1,] 7 10
# [2,] 8 11
# [3,] 9 12
[배열 데이터 접근]
dim(arr) # 차원 반환
# [1] 3 2 2
arr[,,1] # 1면만 추출
# [,1] [,2]
# [1,] 1 4
# [2,] 2 5
# [3,] 3 6
arr[,1,1] # 1면 1열만 추출
# [1] 1 2 3
arr[1,,1] # 1면 1행만 추출
# [1] 1 4
arr[1,1,1] # 1면 1행 1열만 추출
# [1] 1
'데이터 분석 > R' 카테고리의 다른 글
[R] 파일 불러오기/ 내보내기 - read.table(), read.csv(), write.table(), write.csv(), write.xlsx() (0) | 2022.01.25 |
---|---|
[R] R 데이터 종류 #3 - 데이터프레임(Data Frame) (0) | 2022.01.21 |
[R] R 데이터 종류 #1 - 스칼라, 벡터 (0) | 2022.01.21 |