티스토리 뷰

내 생각들

손맛 프로그래밍

infinitesp 2014. 10. 23. 23:45

프로그래밍의 핵심은 loop를 돌리는 것이다. loop는 기계맛이 난다. 하지만 빠르다.


하지만 꼭 loop를 써야 하는 것은 아니다. 그냥 다 쳐 버리는 거다.

예를 들면, theMat.i이라는 matrix에 apply를 통해 mean, sd, count.mid, count.mid3, entropy.freq, rle.max, lz란 함수를 적용하고 싶다면,


  theMat.i.mean[,i] = apply(theMat.i, 1, mean)

  theMat.i.sd[,i] = apply(theMat.i, 1, sd)

  theMat.i.count.mid[,i] = apply(theMat.i, 1, count.mid)

  theMat.i.count.mid3[,i] = apply(theMat.i, 1, count.mid3)

  theMat.i.entropy[,i] = apply(theMat.i, 1, entropy.freq)

  theMat.i.mrle[,i] = apply(theMat.i, 1, rle.max)

  theMat.i.lz[,i] = apply(theMat.i, 1, lz)



이걸 루프로 돌린다면,


  func=lis(mean, sd, count.mid, count.mid3, entropy.freq, rle.max, lz)

  theMat.i.func=list()

  for (i in 1:length(func)) 

     theMat.i.func[[i]]=apply(theMat.i, 1, func[[i]])


훠얼씬 짧다고 느끼지 못할지도 모르지만, 적용해야 할 function이 많아지고, 적용해야할 matrix도 많아지면, 따라서 loop의 갯수가 많아지면 얘기가 달라진다.


따라서 우린 loop를 쓴다.


문제는 이렇게 loop를 쓰면 나중에 읽기도 힘들고(물론 사람이),

수정할 때도 자꾸 헷갈리게 된다는 것.


따라서 loop를 돌리지 않고 위의 source처럼 다 쳐 버리기도 한다.


"몇 개의 loop까지 손으로 쳐 봤어?"

난 오늘 3개까지 쳤다. 역시 프로그래밍은 노가다. 

손으로 하던, 머리로 하던...




  

  


댓글