통계/R

R의 기본 개념, 예시코드와 알아보는 리스트(List)

MKKM 2023. 9. 8. 13:53
반응형

R 언어에서 리스트는 다양한 데이터 유형을 하나의 구조 안에 저장할 수 있어, 복잡하고 다양한 데이터를 효율적으로 관리할 수 있습니다. 또한, R에서 제공하는 다양한 함수들과의 호환성도 뛰어나, 데이터 분석 작업에 있어 중심적인 역할을 합니다.

 

 

목차

  1. 리스트의 기본 개념
  2. 리스트의 생성 및 수정
  3. 리스트 내의 데이터 접근
  4. 리스트 조작하기
  5. 리스트의 응용
  6. 실제 사례로 배우는 리스트 활용

 

1. 리스트의 기본 개념

  • 리스트란 무엇인가?: 리스트는 다양한 유형의 데이터(숫자, 문자열, 다른 리스트 등)를 한데 모아 저장할 수 있는 유용한 구조입니다.
  • 기본 데이터 구조와의 차이점: 벡터는 동일한 유형의 항목만 저장할 수 있는 '상자'라면, 리스트는 여러 유형의 '물건'을 담을 수 있는 '상자'와 비슷합니다.

 

2. 리스트의 생성 및 수정

  • 리스트 생성: list() 함수를 사용하여 다양한 유형의 데이터를 하나의 리스트에 저장할 수 있습니다.
my_list <- list(1:5, "hello", c(TRUE, FALSE), 3.14)

 

  • 리스트 결합: 여러 리스트를 하나로 결합하려면 c() 함수를 사용합니다.
list1 <- list(a = 1, b = 2)
list2 <- list(c = 3, d = 4)
combined_list <- c(list1, list2)

 

  • 리스트의 원소에 이름 붙이기: 리스트의 각 원소에 이름을 붙여서 쉽게 참조할 수 있습니다.
named_list <- list(name = "John", age = 30, city = "New York")

 

3. 리스트 내의 데이터 접근

  • 인덱싱과 서브셋: 리스트에서 특정 항목을 선택하려면 인덱싱을 사용합니다. [[는 항목 자체를, [는 항목의 서브셋을 반환합니다.
my_list[[2]]  # "hello"
my_list[1:3]  # 처음 세 항목의 서브셋

 

  • $를 사용한 원소 접근: 이름이 있는 항목을 참조할 때는 $ 기호를 사용할 수 있습니다.
named_list$name  # "John"

 

4. 리스트 조작하기

  • 리스트 내 원소 추가: 원하는 위치에 새로운 항목을 추가할 수 있습니다.
my_list$new_item <- "new element"

 

  • 리스트의 길이 조절하기: 리스트의 길이를 늘리거나 줄일 수 있습니다.
length(my_list) <- 10  # list 길이를 10으로 조절

 

  • unlist() 함수를 이용한 리스트 해제: 리스트의 구조를 해제하고 벡터로 변환하려면 unlist()를 사용합니다.

 

unlisted <- unlist(my_list)

 

5. 리스트의 응용

  • 중첩된 리스트: 리스트 내에 또 다른 리스트를 저장할 수 있습니다.
nested_list <- list(list1 = list(a = 1, b = 2), list2 = list(c = 3, d = 4))

 

  • 리스트를 이용한 데이터 프레임의 조작: 리스트 구조는 데이터 프레임의 열을 분할할 때 유용합니다.
df <- data.frame(id = 1:3, name = c("A", "B", "C"))
list_df <- split(df, df$id)

 

  • lapply() 함수 예시: 리스트의 각 항목에 함수를 적용하려면 lapply()를 사용합니다.
result <- lapply(my_list, length)

 

6. 실제 사례로 배우는 리스트 활용

  • 리스트 생성 및 조작 예제: 개인의 정보와 기술을 저장하는 리스트를 만들고 기술을 추가하는 예제입니다.
person <- list(name = "Anna", age = 28, skills = c("R", "Python"))
person$skills <- c(person$skills, "SQL")

 

  • 통계 및 데이터 분석에서의 리스트 활용: 여러 모델의 결과를 한곳에 저장할 때 리스트는 매우 유용합니다.
models <- list(
  linear_model = lm(mpg ~ wt, data = mtcars),
  log_model = glm(vs ~ wt, family = binomial, data = mtcars)
)

 

 

 

아래 포스팅도 참고해 보세요!

 RStudio 단축키 모음
 [R] ggplot2로 쉽게 데이터 시각화하기
 R에서 데이터 정렬하는 방법
 R에서 그룹별 합계와 평균 구하기

반응형