직장인 대학원/R

[R] 리스트 (List)

Binsoo 2025. 4. 18.
728x90
반응형

오늘 수업에서는 드디어 R에서 정말 유용한 리스트라는 걸 배웠다.
벡터나 행렬은 한 가지 타입만 저장할 수 있었지만,
리스트는 숫자, 문자열, 논리값, 심지어 또 다른 리스트까지 다 담을 수 있다! 

 

🧱 리스트란?

  • 다양한 자료형을 함께 담을 수 있는 특수한 형태의 벡터
  • 각각의 원소에 이름을 붙일 수도 있음
  • 리스트는 list() 함수로 생성한다
x <- list(1, "a", TRUE, 1 + 4i)
[[1]]  1
[[2]]  "a"
[[3]]  TRUE
[[4]]  1+4i

 

 

✨ 리스트에 이름 붙이기 + 중첩 리스트

Hong <- list(
  kor.name = "홍길동",
  eng.name = "Gil-dong",
  age = 43,
  married = TRUE,
  no.child = 2,
  child.ages = c(13, 10)
)

 

Hong이라는 리스트에 이름이 붙은 정보들이 잘 정리되어 있는 걸 확인할 수 있다!

 

🔍 리스트 구조 보기

str(Hong)
List of 6
 $ kor.name   : chr "홍길동"
 $ eng.name   : chr "Gil-dong"
 $ age        : num 43
 $ married    : logi TRUE
 $ no.child   : num 2
 $ child.ages : num [1:2] 13 10
 

→ str() 함수는 리스트의 구조 요약을 보여주는 좋은 도구!

 

🎯 리스트 성분 인덱싱

이름으로 접근: $ 연산자

Hong$age
# [1] 43
Hong$child.ages[2]
# [1] 10
 
 
문자열 또는 숫자 인덱스로 접근
Hong["age"]       # 리스트 형태로 추출
Hong[["age"]]     # 실제 값 추출
Hong[[2]]         # 두 번째 성분 추출

 

여러 개 성분 추출
Hong[c(1, 2)]     # kor.name과 eng.name을 리스트 형태로 추출
 

🔁 리스트 반복 처리 (lapply())

리스트의 각 성분에 같은 함수를 적용하려면 lapply()를 사용하면 된다!

x <- list(
  a = 1:10,
  beta = exp(-3:3),
  logic = c(TRUE, FALSE, FALSE, TRUE)
)

lapply(x, mean)
$a
[1] 5.5

$beta
[1] 4.535125

$logic
[1] 0.5

 

각 항목의 평균값이 나옴!

 

🎯 사분위수도 적용 가능!

lapply(x, quantile, probs = (1:3)/4)

→ 리스트의 각 성분에 대해 25%, 50%, 75% 분위수 계산

 

 

📌 오늘의 한줄 요약

리스트는 모든 타입이 다 들어갈 수 있음 ,,,,,, 💡

728x90
반응형

'직장인 대학원 > R' 카테고리의 다른 글

[R] 데이터 프레임 (Data Frame)  (0) 2025.04.18
[R] 범주형 데이터 (Factor)  (0) 2025.04.18
[R] 매트릭스 (Matrix)  (0) 2025.04.18
[R] 벡터(Vector)  (0) 2025.04.18
[R] 기본 객체와 자료 형태  (1) 2025.04.18

댓글