Menu
Coddy logo textTech

리스트 수정하기

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

이제 리스트를 생성하고 요소에 접근하는 방법을 알게 되었으니, 이를 수정하는 방법을 배워보겠습니다. 기존 요소를 변경하거나, 새로운 요소를 추가하거나, 요소를 완전히 제거할 수 있습니다.

기존 요소를 변경하려면 할당 연산자와 함께 이중 대괄호를 사용하세요:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"
print(my_list)

출력:

[[1]]
[1] 10

[[2]]
[1] "world"

[[3]]
[1] TRUE

새로운 요소를 추가하려면, 아직 존재하지 않는 인덱스에 값을 할당하기만 하면 됩니다:

my_list <- list(10, "hello")
my_list[[3]] <- FALSE
print(my_list)

출력:

[[1]]
[1] 10

[[2]]
[1] "hello"

[[3]]
[1] FALSE

요소를 제거하려면 해당 요소에 NULL을 할당하세요:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL
print(my_list)

출력:

[[1]]
[1] 10

[[2]]
[1] TRUE

두 번째 요소를 제거한 후, 남은 요소들이 빈 자리를 채우기 위해 이동한다는 점에 유의하세요. 위치 3에 있던 요소가 이제 위치 2에 있게 됩니다.

challenge icon

챌린지

쉬움

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

  1. 리스트를 초기화하기 위한 쉼표로 구분된 세 개의 값 (예: 50,hello,TRUE)
  2. 수정을 위한 쉼표로 구분된 인덱스와 새로운 값 (예: 2,goodbye)
  3. 삭제할 요소의 인덱스 (예: 3)

다음 작업을 수행하세요:

  1. 세 개의 초기 값으로 리스트를 생성합니다 (적절한 타입으로 변환하세요: numeric, character, logical)
  2. 원본 리스트를 출력합니다
  3. 지정된 인덱스의 요소를 새로운 값으로 수정합니다 (문자열 character string으로 유지하세요)
  4. 수정 후의 리스트를 출력합니다
  5. 리스트에 값이 999인 네 번째 요소를 새로 추가합니다
  6. 새 요소가 추가된 후의 리스트를 출력합니다
  7. 지정된 인덱스(세 번째 입력값)의 요소를 삭제합니다
  8. 최종 리스트를 출력합니다

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

100,world,FALSE
1,updated
2

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

[[1]]
[1] 100

[[2]]
[1] "world"

[[3]]
[1] FALSE

[[1]]
[1] "updated"

[[2]]
[1] "world"

[[3]]
[1] FALSE

[[1]]
[1] "updated"

[[2]]
[1] "world"

[[3]]
[1] FALSE

[[4]]
[1] 999

[[1]]
[1] "updated"

[[2]]
[1] FALSE

[[3]]
[1] 999

설명:

  • 원본 리스트: 100, "world", FALSE
  • 인덱스 1 수정 후: "updated", "world", FALSE
  • 네 번째 요소 추가 후: "updated", "world", FALSE, 999
  • 인덱스 2 삭제 후: "updated", FALSE, 999 (남은 요소들의 위치가 이동함)

수정 시에는 이중 대괄호 [[ ]]를 사용하고, 요소를 삭제할 때는 NULL을 할당해야 함을 기억하세요.

치트 시트

리스트의 기존 요소를 수정하려면 할당과 함께 이중 대괄호를 사용하세요:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- "world"

리스트에 새로운 요소를 추가하려면 아직 존재하지 않는 인덱스에 할당하세요:

my_list <- list(10, "hello")
my_list[[3]] <- FALSE

리스트에서 요소를 제거하려면 해당 요소에 NULL을 할당하세요:

my_list <- list(10, "hello", TRUE)
my_list[[2]] <- NULL

요소가 제거되면 나머지 요소들이 이동하여 빈 공간을 채웁니다. 위치 3에 있던 요소가 위치 2가 됩니다.

직접 해보기

# 입력 읽기
con <- file("stdin", "r")
initial_values <- suppressWarnings(readLines(con, n = 1))  # 쉼표로 구분된 세 개의 값
modify_input <- suppressWarnings(readLines(con, n = 1))    # 인덱스와 새로운 값
remove_index <- suppressWarnings(readLines(con, n = 1))    # 삭제할 인덱스
close(con)

# 초기 값 파싱
values <- strsplit(initial_values, ",")[[1]]
val1 <- as.numeric(values[1])
val2 <- values[2]
val3 <- as.logical(values[3])

# 수정 입력 파싱
mod_parts <- strsplit(modify_input, ",")[[1]]
mod_index <- as.numeric(mod_parts[1])
mod_value <- mod_parts[2]

# 삭제 인덱스 파싱
rem_index <- as.numeric(remove_index)

# TODO: 아래에 코드를 작성하세요
# 1. 세 개의 초기 값(val1, val2, val3)으로 리스트를 생성하세요
# 2. 원본 리스트를 출력하세요
# 3. mod_index에 있는 요소를 mod_value로 수정하세요
# 4. 수정 후의 리스트를 출력하세요
# 5. 값이 999인 네 번째 요소를 새로 추가하세요
# 6. 추가 후의 리스트를 출력하세요
# 7. rem_index에 있는 요소를 삭제하세요 (NULL 사용)
# 8. 최종 리스트를 출력하세요
quiz icon실력 점검

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

기초의 모든 레슨