R - 리스트: 데이터 조직의 친절한 가이드

안녕하세요, R 프로그래밍에 도전하는 여러분! 오늘 우리는 R의 가장 다재다능한 데이터 구조 중 하나를 탐구해보겠습니다: 리스트. 리스트는 R 프로그래밍의 스위스 아ーノ이 키와 같은 존재입니다 - 거의 모든 것을 담을 수 있습니다! 함께 리스트의 미스터리를 풀어보도록 하겠습니다.

R - Lists

리스트 만들기

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

이제 각 요소에 이름이 지정되어 있습니다. 이렇게 하면 리스트를 더 쉽게 탐색할 수 있습니다!

리스트 요소 접근하기

리스트의 요소에 접근하는 것은 가방에서 필요한 것을 꺼내는 것과 같습니다. 여러 가지 방법으로 이를 할 수 있습니다:

  1. 사각 중括호 [] 사용하기:

    print(labeled_list[1])  # 첫 번째 요소를 포함한 리스트 반환
  2. 더블 사각 중括호 [[]] 사용하기:

    print(labeled_list[[1]])  # 첫 번째 요소의 실제 값을 반환
  3. $ 연산자 사용하기 (이름이 지정된 요소에 대해):

    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