[프로그래밍] R에서의 인덱싱 차이: [] vs [[]]

R에서의 인덱싱 차이: [] vs [[]]

R에서 리스트나 데이터프레임을 다룰 때, 데이터를 추출하는 방법에 대해 헷갈릴 수 있습니다. 특히, 리스트에서 인덱싱을 할 때 사용하는 **싱글 대괄호 ([])**와 **이중 대괄호 ([[]])**의 차이를 잘 이해하는 것이 중요합니다. 두 인덱싱 방식의 차이를 알아보겠습니다.


1. 싱글 대괄호 ([])

[]부분 객체를 반환하는데 사용됩니다. 즉, 리스트, 벡터, 데이터프레임에서 슬라이싱할 때 사용되며, 원본 객체의 형태를 유지하면서 부분적인 객체를 반환합니다. 이 방식은 여러 값을 추출하거나, 객체를 추출하여 새로운 객체로 반환할 때 사용됩니다.

예시:
# 리스트 생성 my_list <- list(a = 1, b = 2, c = 3) # 싱글 대괄호로 1번 요소 추출 part_list <- my_list[1] print(part_list)

결과:

$a [1] 1

위 코드에서 my_list[1]은 리스트의 첫 번째 요소를 반환합니다. 하지만 이 반환된 값은 여전히 리스트 형태로 반환됩니다. 즉, part_list는 길이가 1인 리스트가 됩니다.

2. 이중 대괄호 ([[]])

[[]]는 리스트에서 단일 값직접적으로 추출할 때 사용됩니다. 이 방식은 리스트에서 값을 "벗겨내는" 방식으로, 리스트 안의 값 자체를 반환합니다. 즉, 이중 대괄호를 사용하면 리스트에서 하나의 값을 추출하고, 그 값이 리스트 형태가 아닌 원래의 형태로 반환됩니다.

예시:
# 리스트 생성 my_list <- list(a = 1, b = 2, c = 3) # 이중 대괄호로 1번 요소 추출 value <- my_list[[1]] print(value)

결과:

[1] 1

my_list[[1]]은 **단일 값 1**을 반환합니다. 이 값은 리스트 형태가 아니며, value단일 값으로 저장됩니다.


차이점 요약

특징[] 인덱싱[[]] 인덱싱
용도벡터, 리스트, 데이터프레임에서 부분 객체 추출리스트에서 값 직접 추출
결과객체의 부분 객체 (리스트 형태로 반환)값 자체 반환 (리스트 벗겨냄)
여러 값 추출 가능가능 (여러 값을 추출하여 부분 객체 반환)불가능 (하나의 값만 추출)

사용 예시

# 리스트 생성 my_list <- list(a = 1, b = 2, c = 3) # 싱글 대괄호로 추출 part_list <- my_list[1] # 리스트로 반환 print(part_list) # $a : 1 # 이중 대괄호로 추출 value <- my_list[[1]] # 값으로 반환 print(value) # 1

결론

  • []는 객체의 부분을 추출하여 원본 객체의 형태를 유지합니다. 여러 값을 한 번에 추출할 때 유용합니다.
  • [[]]는 리스트에서 값을 직접 추출할 때 사용되며, 단일 값을 반환합니다.

R에서 데이터를 다룰 때 이 두 인덱싱 방식을 잘 구분하여 사용하면, 원하는 결과를 쉽게 얻을 수 있습니다. 

댓글

이 블로그의 인기 게시물

공압 속도 제어: 미터인 vs 미터아웃

[PLC] PLC 아날로그 입출력 기본

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

NPN, PNP 트랜지스터 차이점

Industrial Control with Relay: 파워릴레이와 범용릴레이

[PLC] 래더 다이어그램과 PLC

[PLC] 접지(지락) 사고와 단락의 차이점 (The Difference Between a Ground Fault and Short Circuit)

제너 다이오드에 저항을 연결하는 이유

[PLC] SSR 선정시 고려사항 - 돌입전류

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)