06 | 더 나은 반복문

    foreach[8]는 apply() 계열 함수, for( ) 문 등을 대체할 수 있는 루프문을 위한 함수다. for 문과의 가장 큰 차이는 반환 값이 있고, { }가 아닌 %do% 문을 사용해 블록을 지정한다는 점이다.

    foreach 패키지를 설치한다.

    > install.packages("foreach")
    > library(foreach)
    

    다음에 이 함수의 기본 문법을 보였다.

    표 5-15 foreach( ) 함수

    foreach::foreach : 주어진 값들에 대해 반복문을 수행한다.

    foreach::foreach(
      ...,  # 표현식 ex에 넘겨줄 인자
      # .combine ex에서의 반환 값을 어떻게 합칠지 지정한다. cbind(컬럼 방향으로 합친 데이터 프레임 반환),
      # rbind(행 방향으로 합친 데이터 프레임 반환), c(벡터로 반환) 등이 그 예다. 기본값은 결과를 리스트로 합친다.
      .combine
    ) %do% ex  # ex는 평가할 표현식
    

    기본적인 예로 1에서 5까지의 숫자를 루프를 돌면서 %do% 안에서 반환하는 예를 살펴보자. .combine이 지정되지 않았으므로 결과가 리스트로 반환된다.

    > foreach(i=1:5) %do% {
    +   return(i)
    + }
    1
    [1] 1
    
    2
    [1] 2
    
    3
    [1] 3
    
    4
    [1] 4
    
    5
    [1] 5
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.