R - 배열: 강력한 데이터 구조에 대한 초보자 가이드
안녕하세요, R 프로그래밍에 도전하는 여러분! R 배열의 세계로 떠나는 흥미로운 여정의 안내자로서 기쁩니다. 컴퓨터 과학을 10년 이상 가르쳐온 경험을 바탕으로, 배열은 프로그래밍의 스위스 아르바이트 knife와도 같은东西입니다. 다재다능하고 강력하며, 반드시 습득해야 할 것입니다. 그麼, 시작해봅시다!
배열이란?
구체적인 내용에 들어가기 전에, 기본 개념을 알아보겠습니다. 책이 몇 권 있다고 가정해봅시다. 그 책들을 한 stos에 쌓아두면 특정 책을 찾기 어렵습니다. 그러나 책장에 여러 층과 구역을 만들어 책을 정리하면 어떨까요? 이것이 바로 R에서 배열의 개념입니다. 데이터를 구조화된 방식으로 저장하고 관리하는 것입니다.
R에서 배열은 동일한 유형의 데이터를 저장할 수 있는 다차원 데이터 구조입니다. 벡터의 초능력을 가진 것처럼, 여러 차원에서 데이터를 저장할 수 있습니다.
예제: 첫 번째 배열 만들기
우리는 첫 번째 배열을 만들어보겠습니다. array()
함수를 사용하겠습니다.
my_first_array <- array(1:24, dim = c(4, 3, 2))
print(my_first_array)
이 코드를 실행하면 다음과 같은 결과를 볼 수 있습니다:
, , 1
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
, , 2
[,1] [,2] [,3]
[1,] 13 17 21
[2,] 14 18 22
[3,] 15 19 23
[4,] 16 20 24
어떻게 된 거죠? 우리는 3차원 배열을 만들었습니다! 두 개의 4x3 행렬이 상호에 쌓여 있는 것을 상상해보세요. dim = c(4, 3, 2)
부분은 R에 4행, 3열, 2개의 "레이어" 또는 행렬을 만들도록 지시합니다.
열과 행 이름 지정
책장을 레이블링하여 책을 쉽게 찾을 수 있는 것처럼, 우리는 배열의 차원을 이름 지정할 수 있습니다. 이렇게 하면 데이터가 더 의미 있고, 더 쉽게 다룰 수 있습니다.
# 이름이 지정된 차원을 가진 배열 만들기
student_scores <- array(
c(85, 90, 78, 92, 88, 76, 95, 87, 82),
dim = c(3, 3),
dimnames = list(
c("Alice", "Bob", "Charlie"),
c("Math", "Science", "English")
)
)
print(student_scores)
출력:
Math Science English
Alice 85 88 95
Bob 90 76 87
Charlie 78 92 82
이제 배열에 의미 있는 행과 열 이름이 있습니다. Alice가 수학에서 85점을, 영어에서 95점을 받았다는 것을 이해하는 것이 훨씬 쉬워졌습니다.
배열 요소 접근
이제 배열을 가지고, 특정 정보를 어떻게 얻을까요? 책장의 특정 층과 구역을 확인하는 것과 같습니다.
# 단일 요소 접근
print(student_scores["Alice", "Math"]) # 출력: 85
# 전체 행 접근
print(student_scores["Bob", ]) # 출력: Math 90 Science 76 English 87
# 전체 열 접근
print(student_scores[, "Science"]) # 출력: Alice 88 Bob 76 Charlie 92
배열 요소 조작
배열은 데이터를 저장하는 것만이 아니라, 데이터를 변경할 수도 있습니다. 몇 가지 점수를 갱신해보겠습니다:
# 단일 점수 갱신
student_scores["Charlie", "English"] <- 89
print(student_scores["Charlie", "English"]) # 출력: 89
# 전체 행 갱신
student_scores["Alice", ] <- c(91, 93, 97)
print(student_scores["Alice", ]) # 출력: Math 91 Science 93 English 97
배열 요소에 대한 계산
배열의 가장 강력한 기능 중 하나는 요소에 대한 계산을 수행할 수 있다는 것입니다. 몇 가지 평균을 계산해보겠습니다:
# 각 학생의 평균 점수 계산
student_averages <- apply(student_scores, 1, mean)
print(student_averages)
# 각 과목의 평균 점수 계산
subject_averages <- apply(student_scores, 2, mean)
print(subject_averages)
apply()
함수는 배열의瑞士 Army knife입니다. 두 번째 인자(1 또는 2)는 R에게 함수를 행(1) 또는 열(2)에 적용하도록 지시합니다.
배열 메서드
다음은 R에서 흔히 사용되는 배열 메서드 표입니다:
메서드 | 설명 | 예제 |
---|---|---|
array() |
배열 생성 | array(1:12, dim = c(3, 4)) |
dim() |
배열 차원 가져오기/설정 | dim(my_array) |
length() |
배열 요소 수 가져오기 | length(my_array) |
dimnames() |
배열 차원 이름 가져오기/설정 | dimnames(my_array) |
apply() |
배열 테두리에 함수 적용 | apply(my_array, 2, sum) |
sweep() |
배열 요약 제거 | sweep(my_array, 2, colMeans(my_array)) |
결론
축하합니다! R 배열의 강력한 세계로 첫 걸음을 뗐습니다. 우리는 배열을 생성하고, 차원을 이름 지정하고, 요소에 접근하고 조작하며, 요소에 대한 계산을 수행하는 방법을 다루었습니다.
배열을 다루는 것은 도서관을 조직하는 것과 같습니다. 처음에는 복잡할 수 있지만, 한 번 익숙해지면 데이터를 저장하고 접근하며 분석하는 데 매우 효율적으로 됩니다.
R 여정을 계속하면서, 배열은 간단한 데이터 분석에서 복잡한 통계 모델에 이르기까지 어디서든 등장합니다. 그러므로 계속 연습하고, 호기심을 유지하며, 실험을 두려워 말아주세요. 행복하게 코딩하시고, 배열이 항상 잘 정리되기를 바랍니다!
Credits: Image by storyset