2011-10-13 2 views
3

안녕 내 XTS 구조 인 XTS에 가족 기능을 적용와 루프를 교체 :

head(sym) 

        BidSize Bid Ask AskSize Quantity Mid 
    2006-01-04 09:01:00 3771 181000 182000 5783 15625 181500 
    2006-01-04 09:02:00 3952 181000 182000 5659  180 181500 
    2006-01-04 09:03:00 3556 181000 182000 5943  1059 181500 
    2006-01-04 09:04:00 3747 181000 182000 6133  261 181500 
    2006-01-04 09:05:00 3957 181000 182000 6077  101 181500 
    2006-01-04 09:06:00 3898 181000 182000 6511  311 181500 

나는 하나의 숫자 (안 배열)로 X 용으로 설계된 기능 getTickSize(x,date) 있습니다.

가능하면 나는 "스마트"에 의해 루프에 대해 다음을 대체

for (i in 1:nrow(sym[1:10])){ 
    sym$TS[i] <- getTickSize(sym$Mid[i],index(sym)[i]) 
    } 

모든 포인터 기능

의 적용 가족에게 전화를 하시겠습니까? 내 모든 시도가 다음과 같은 경고와 만났다 :

sym$TS<-mapply(getTickSize, sym$Mid, index(sym)) 

주 : 기능의 *apply 가족이 단순한보다 항상 더 나은

the condition has length > 1 and only the first element will be used 
+0

어레이에서 작동하려면'getTickSize' 함수를 다시 쓰는 것이 좋습니다. –

+0

함수를 "벡터화"하는 링크 또는 포인터에 대한 제안을 주셔서 감사합니다. – qaTK

답변

1

내가이 사건을 믿고, mapply 가장 쉬운 해결책이다 루프 (대부분의 신화는 S의 초기 버전으로 거슬러 올라갑니다).

하지만 나는 훨씬 섹시 해 보인다.

+0

감사합니다. 예상대로 작동합니다. 또한 예상대로 성능 향상은 없지만 섹시한 코드. – qaTK