[R] List Iterator

R 2015. 8. 6. 21:46


R의 List의 값을 Iteration하고 싶을 때, 사용할 수 있는 코드이다.



첫번째 예제이다. 단순히 for each를 이용하는 예제이다.


mylist <- list(x <- 1:10)

mylist


for (x in mylist) {

  print(x)

}



결과는 다음과 같다.

> mylist
[[1]]
 [1]  1  2  3  4  5  6  7  8  9 10


> for (x in mylist) {
+   print(x)
+ }
 [1]  1  2  3  4  5  6  7  8  9 10



두번째 예제는 iterators 라이브러리를 로딩한 경우이다. nextElem이 마지막 원소의 다음을 가르키게 되면 에러가 발생하는데, 이를 try문으로 예외를 잡게 하고 try-error인 class인 경우에는 loop를 빠지게 하는 코드이다. 
(try 문이 의외로 중요한 상황에서 쓰일 수 있은 잘 기억한다!!)


library(iterators)

it <- iter(mylist)
while (TRUE) {
  d = try(nextElem(it))
  if (class(d) == "try-error") break
  print(d)
}

결과는 다음과 같다.


> library(iterators)
> it <- iter(mylist)
> while (TRUE) {
+   d = try(nextElem(it))
+   if (class(d) == "try-error") break
+   print(d)
+ }
 [1]  1  2  3  4  5  6  7  8  9 10
Error : StopIteration




Posted by '김용환'
,