R - 리스트: 데이터 조직의 친절한 가이드
안녕하세요, R 프로그래밍에 도전하는 여러분! 오늘 우리는 R의 가장 다재다능한 데이터 구조 중 하나를 탐구해보겠습니다: 리스트. 리스트는 R 프로그래밍의 스위스 아ーノ이 키와 같은 존재입니다 - 거의 모든 것을 담을 수 있습니다! 함께 리스트의 미스터리를 풀어보도록 하겠습니다.
리스트 만들기
R의 리스트는 다양한 데이터를 담을 수 있는 마법의 컨테이너 같습니다. 상상해보세요, 여행을 준비할 때 옷, 책, 위생용품을 한 가방에 모두 넣는 것처럼. 그게 바로 R의 리스트가 하는 일입니다!
우리의 첫 번째 리스트를 만들어보겠습니다:
my_first_list <- list("apple", 42, TRUE, c(1, 2, 3))
print(my_first_list)
이 코드를 실행하면 다음과 같은 출력을 보게 됩니다:
[[1]]
[1] "apple"
[[2]]
[1] 42
[[3]]
[1] TRUE
[[4]]
[1] 1 2 3
이게 정말 멋지죠? 우리는 문자열, 숫자, 논리 값, 그리고 벡터까지 포함한 리스트를 만들었습니다. 마치 무엇이든 넣을 수 있는 Drawercabinet 같은 것입니다.
리스트 요소에 이름 지정하기
이제 우리의 리스트를 좀 더 정리해보겠습니다. 리스트의 각 요소에 이름을 줄 수 있습니다. 가방의 각 부분을 레이블링하는 것과 같습니다:
labeled_list <- list(fruit = "banana", number = 7, is_fun = TRUE, scores = c(85, 90, 95))
print(labeled_list)
이 outputs는 다음과 같습니다:
$fruit
[1] "banana"
$number
[1] 7
$is_fun
[1] TRUE
$scores
[1] 85 90 95
이제 각 요소에 이름이 지정되어 있습니다. 이렇게 하면 리스트를 더 쉽게 탐색할 수 있습니다!
리스트 요소 접근하기
리스트의 요소에 접근하는 것은 가방에서 필요한 것을 꺼내는 것과 같습니다. 여러 가지 방법으로 이를 할 수 있습니다:
-
사각 중括호
[]
사용하기:print(labeled_list[1]) # 첫 번째 요소를 포함한 리스트 반환
-
더블 사각 중括호
[[]]
사용하기:print(labeled_list[[1]]) # 첫 번째 요소의 실제 값을 반환
-
$
연산자 사용하기 (이름이 지정된 요소에 대해):print(labeled_list$fruit) # "fruit"에 연결된 값을 반환
이제 이를 시도해보겠습니다:
print(labeled_list[1])
print(labeled_list[[1]])
print(labeled_list$fruit)
이 outputs는 다음과 같습니다:
$fruit
[1] "banana"
[1] "banana"
[1] "banana"
이 차이를 주의해보세요. 첫 번째 방법은 리스트를 반환하고, 나머지 두 방법은 실제 값을 반환합니다.
리스트 요소 조작하기
리스트는 변할 수 있습니다. 우리는 리스트의 요소를 업데이트할 수 있습니다:
labeled_list$fruit <- "mango"
labeled_list[[2]] <- 10
labeled_list$scores[2] <- 92
print(labeled_list)
이를 실행한 후, 다음을 볼 수 있습니다:
$fruit
[1] "mango"
$number
[1] 10
$is_fun
[1] TRUE
$scores
[1] 85 92 95
우리는 과일을 바꾸고, 숫자를 업데이트하고, scores 벡터의 요소를 수정했습니다!
리스트 병합하기
때로는 두 개의 리스트를 하나로 합치고 싶을 수 있습니다. 두 개의 가방을 하나의 더 큰 가방으로 합치는 것과 같습니다:
list1 <- list(a = 1, b = 2)
list2 <- list(c = 3, d = 4)
merged_list <- c(list1, list2)
print(merged_list)
이 outputs는 다음과 같습니다:
$a
[1] 1
$b
[1] 2
$c
[1] 3
$d
[1] 4
와우! 우리는 두 개의 작은 리스트에서 새로운, 더 큰 리스트를 만들었습니다.
리스트를 벡터로 변환하기
때로는 리스트를 간단한 벡터로 평坦화하고 싶을 수 있습니다. 가방을 열고 모든 것을 침대 위에 펼치는 것과 같습니다:
my_list <- list(1, 2, 3, 4)
my_vector <- unlist(my_list)
print(my_vector)
이 outputs는 다음과 같습니다:
[1] 1 2 3 4
우리의 리스트는 간단한 벡터로 변환되었습니다!
리스트 메서드 표
여기 몇 가지 일반적인 리스트 메서드 표가 있습니다:
메서드 | 설명 | 예시 |
---|---|---|
list() |
새로운 리스트 생성 | list(1, "a", TRUE) |
length() |
리스트의 요소 수 가져오기 | length(my_list) |
names() |
리스트 요소의 이름 가져오기/설정 | names(my_list) <- c("a", "b", "c") |
append() |
리스트에 요소 추가 | append(my_list, list(d = 4)) |
unlist() |
리스트를 벡터로 변환 | unlist(my_list) |
lapply() |
리스트의 모든 요소에 함수 적용 | lapply(my_list, sqrt) |
이렇게 우리는 R의 리스트를 통해 여정을 떠났습니다. 생성에서 조작까지, 그리고 그 이상을 탐구했습니다. 연습이 완벽을 만드는 것을 기억하세요, 그러니 이 개념들을 실험해보지 마세요. 리스트는 매우 강력하고 유연하며, 이를 마스터하면 R 프로그래밍의 여정이 훨씬 더 흥미로워질 것입니다!
행복하게 코딩하세요, 그리고 여러분의 리스트는 항상 정리되고 데이터 구조는 견고하길 바랍니다!
Credits: Image by storyset