더북(TheBook)

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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.