06 | 더 나은 반복문
foreach[8]는 apply() 계열 함수, for( ) 문 등을 대체할 수 있는 루프문을 위한 함수다. for 문과의 가장 큰 차이는 반환 값이 있고, { }가 아닌 %do% 문을 사용해 블록을 지정한다는 점이다.
foreach 패키지를 설치한다.
> install.packages("foreach") > library(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