Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

R에서 for 루프로 리스트의 모든 요소 출력하는 방법

R에서 for 루프는 벡터에 적용할 때와 리스트에 적용할 때 문법상 차이가 전혀 없습니다. 평소 벡터에 사용하던 방식을 그대로 쓰면 됩니다. 예를 들어 List라는 이름의 리스트가 있고, 이 리스트의 모든 요소를 출력하고 싶다면 다음 한 줄이면 충분합니다.

for(i in List){print(i)}

여기서 반복 변수 i는 인덱스 번호가 아니라 리스트에 담긴 각 벡터(요소) 자체를 순서대로 가리킵니다. 따라서 매 반복마다 해당 벡터 전체가 print() 함수를 통해 화면에 출력됩니다.

1. 예제용 리스트 만들기

실습을 위해 서로 다른 성격의 데이터를 담은 리스트를 먼저 생성해 보겠습니다. 아래 리스트는 알파벳 문자 벡터, 정규분포·포아송분포·균등분포·지수분포에서 추출한 난수 벡터, 반올림한 정수 벡터, 그리고 1부터 100까지의 수열까지 총 7개의 요소로 구성되어 있습니다.

List <- list(A = LETTERS[1:26],
             B = rnorm(50, 2, 1),
             C = rpois(100, 5),
             D = runif(50, 2, 3),
             E = rexp(50, 3),
             F = round(runif(50, 1, 5), 0),
             G = 1:100)
List

리스트 객체를 그대로 호출하면 $A, $B처럼 각 요소의 이름이 함께 표시되며 내용이 출력됩니다. 난수 함수를 사용했기 때문에 실제 실행 환경에서는 값이 조금씩 다르게 나타날 수 있다는 점을 참고하세요.

2. for 루프로 모든 요소 출력하기

이제 for 루프를 사용해 리스트의 모든 요소를 차례대로 출력해 보겠습니다.

for(i in List){
  print(i)
}

실행하면 리스트에 담긴 7개의 벡터가 저장된 순서대로 하나씩 출력됩니다. 결과 형태는 다음과 같습니다.

 [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
[20] "T" "U" "V" "W" "X" "Y" "Z"        # $A : 알파벳 문자 벡터
 [1] 1.93 3.44 -0.37 0.02 1.53 2.29 …  # $B : 정규분포 난수 50개
 [1] 3 6 4 6 4 8 4 4 3 2 5 4 …         # $C : 포아송분포 난수 100개
 [1] 2.57 2.10 2.54 2.72 2.24 2.66 …   # $D : 균등분포 난수 50개
 [1] 1.008 0.017 0.685 0.096 0.039 …   # $E : 지수분포 난수 50개
 [1] 3 1 3 5 2 1 2 2 1 3 3 4 …         # $F : 반올림된 정수 50개
 [1]  1  2  3  4  5  6  7  8  9 10 …   # $G : 1~100 수열

이처럼 리스트의 길이나 요소의 종류에 상관없이 for(i in List) 구문만으로 리스트 안의 모든 요소를 손쉽게 순회하며 처리할 수 있습니다.

3. 함께 알아두면 좋은 팁

  • 인덱스 기반 순회: for(i in seq_along(List)){ print(List[[i]]) }처럼 seq_along()을 활용하면 요소의 위치 정보를 함께 사용할 수 있어, 특정 조건에서 요소를 건너뛰거나 위치별로 다른 작업을 해야 할 때 유용합니다.
  • 요소 이름 확인: names(List)를 실행하면 리스트의 요소 이름을 한눈에 파악할 수 있어, 이름 기반으로 접근할 때 참고하기 좋습니다.
  • 구조 요약: 전체 내용 대신 구조만 빠르게 확인하고 싶다면 str(List) 함수를 사용하는 것이 더 효율적입니다.