R에서 foreach 패키지를 설치하면 자동으로 iterators 패키지도 설치한다.
> install.packages("foreach")
also installing the dependency ‘iterators’
URL 'https://cran.rstudio.com/bin/macosx/mavericks/contrib/3.2/iterators_1.0.7.tgz'을 시도합니다
Content type 'application/x-gzip' length 309613 bytes (302 KB)
==================================================
downloaded 302 KB
URL 'https://cran.rstudio.com/bin/macosx/mavericks/contrib/3.2/foreach_1.4.2.tgz'을 시도합니다
Content type 'application/x-gzip' length 382114 bytes (373 KB)
==================================================
downloaded 373 KB
1. Iterator
iterator를 사용하는 예제이다. loop를 종료하는 조건이 특이하다.
library(iterators)
name = c("A", "B", "C", "D")
itr <- iter(name)
while (TRUE) {
d = try(nextElem(itr))
print(d)
if (class(d) == "try-error") break
}
결과는 다음과 같다.
[1] "A"
[1] "B"
[1] "C"
[1] "D"
Error : StopIteration
[1] "Error : StopIteration\n"
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError: StopIteration>
if (class(d) == "try-error") break
2. foreach
foreach는 do와 같이 써서, 아래 doSNOW를 설치한다.
> install.packages("doSNOW")
그리고, 아래 예제를 실행한다.
> foreach(i = 1:3) %do% {sqrt(i)}
[[1]]
[1] 1
[[2]]
[1] 1.414214
[[3]]
[1] 1.732051
참고 자료.
http://www.exegetic.biz/blog/2013/11/iterators-in-r/
http://www3.nd.edu/~steve/computing_with_data/21_looping/looping_iterators_part1.html
'R' 카테고리의 다른 글
[R] R에서 도움말 얻기 (0) | 2015.07.25 |
---|---|
[R] 문자열 합치기 (String Concatenation) (0) | 2015.07.25 |
[R] list를 data.frame의 column으로 추가하는 예제 (0) | 2015.07.16 |
[R ] = 과 <- 의 차이 (0) | 2015.07.16 |
[R] 특정 값으로 채우는 list 생성하기 (0) | 2015.07.16 |