Menu
Coddy logo textTech

리스트 요소에 접근하기

Coddy R 여정의 기초 섹션에 포함된 레슨 — 78개 중 72번째.

리스트는 벡터와 비교하여 요소에 접근할 때 다른 구문을 사용합니다. 주요 차이점은 단일 대괄호 [ ]와 이중 대괄호 [[ ]]의 차이입니다.

이중 대괄호는 리스트에서 실제 요소를 추출합니다:

my_list <- list(42, "hello", TRUE)
print(my_list[[1]])

출력:

[1] 42

단일 대괄호는 요소 자체가 아니라 해당 요소를 포함하는 하위 리스트를 반환합니다:

my_list <- list(42, "hello", TRUE)
print(my_list[1])

출력:

[[1]]
[1] 42

이 차이는 실제 값을 작업하고 싶을 때 중요합니다. 리스트 요소가 벡터인 경우, 이중 대괄호를 사용하면 해당 요소에 직접 접근한 다음 벡터 인덱싱을 사용할 수 있습니다.

my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2])

출력:

[1] 20

여기서, my_list[[1]]은 벡터를 가져오고, [2]는 그것의 두 번째 요소에 접근합니다. 기억하세요: 실제 내용이 필요할 때는 [[ ]]를 사용하고, 더 작은 리스트를 원할 때는 [ ]를 사용하세요.

challenge icon

챌린지

쉬움

두 줄의 입력을 받게 됩니다:

  1. 서로 다른 타입의 쉼표로 구분된 세 개의 값 (예: 100,hello,TRUE)
  2. 네 번째 요소로 저장될 벡터를 나타내는 쉼표로 구분된 숫자 목록 (예: 5,10,15,20)

다음 작업을 수행하세요:

  1. 숫자 값, 텍스트, 논리 값, 그리고 숫자 벡터의 네 가지 요소를 포함하는 리스트를 생성합니다.
  2. 이중 대괄호를 사용하여 두 번째 요소(텍스트 값)를 추출하고 출력합니다.
  3. 단일 대괄호를 사용하여 세 번째 요소를 추출하고 결과를 출력합니다 (출력 형식의 차이점에 유의하세요).
  4. 이중 대괄호를 사용하여 네 번째 요소에 저장된 벡터에 접근한 다음, 벡터 인덱싱을 사용하여 세 번째 값을 추출하고 출력합니다.
  5. 네 번째 요소에 있는 모든 숫자의 합계를 출력합니다 (이중 대괄호로 벡터에 접근하고 sum()을 사용하세요).

예를 들어, 입력이 다음과 같다면:

42,world,FALSE
8,16,24,32,40

출력은 다음과 같아야 합니다:

[1] "world"
[[1]]
[1] FALSE

[1] 24
[1] 120

설명:

  • my_list[[2]]는 실제 텍스트 값인 "world"를 추출합니다.
  • my_list[3]은 FALSE를 포함하는 서브리스트를 반환합니다 (출력의 [[1]]에 유의하세요).
  • my_list[[4]][3]은 벡터에 접근한 다음, 세 번째 요소인 24를 가져옵니다.
  • sum(my_list[[4]])는 8+16+24+32+40 = 120을 계산합니다.

치트 시트

리스트는 요소에 접근하기 위해 서로 다른 대괄호 구문을 사용합니다:

이중 대괄호 [[ ]]는 실제 요소를 추출합니다:

my_list <- list(42, "hello", TRUE)
print(my_list[[1]])  # 출력: [1] 42

단일 대괄호 [ ]는 요소를 포함하는 하위 리스트를 반환합니다:

my_list <- list(42, "hello", TRUE)
print(my_list[1])  # 출력: [[1]] [1] 42

중첩된 요소에 접근하기: 이중 대괄호를 사용하여 리스트에서 벡터를 추출한 다음, 벡터 인덱싱을 사용합니다:

my_list <- list(c(10, 20, 30), "text")
print(my_list[[1]][2])  # 출력: [1] 20

실제 내용이 필요할 때는 [[ ]]를 사용하고, 더 작은 리스트를 원할 때는 [ ]를 사용하세요.

직접 해보기

# 입력 읽기
con <- file("stdin", "r")
input1 <- suppressWarnings(readLines(con, n = 1))  # 첫 번째 줄: 쉼표로 구분된 세 개의 값
input2 <- suppressWarnings(readLines(con, n = 1))  # 두 번째 줄: 벡터를 위한 쉼표로 구분된 숫자들
close(con)

# 첫 번째 입력 줄을 개별 값으로 파싱
values <- strsplit(input1, ",")[[1]]
numeric_val <- as.numeric(values[1])
text_val <- values[2]
logical_val <- as.logical(values[3])

# 두 번째 입력 줄을 숫자형 벡터로 파싱
vector_val <- as.numeric(strsplit(input2, ",")[[1]])

# TODO: 아래에 코드를 작성하세요
# 1. numeric_val, text_val, logical_val, vector_val 네 개의 요소를 가진 리스트를 생성하세요
# 2. 이중 대괄호 [[ ]]를 사용하여 두 번째 요소를 추출하고 출력하세요
# 3. 단일 대괄호 [ ]를 사용하여 세 번째 요소를 추출하고 출력하세요
# 4. 이중 대괄호로 네 번째 요소에 접근한 다음, 그 안의 세 번째 값을 추출하세요
# 5. 네 번째 요소에 있는 모든 숫자의 합계를 출력하세요
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨