[英]Replace a for loop with apply family function on a 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
我有一個函數getTickSize(x,date)
,它是為x設計的單個數字(不是數組)。
我想盡可能通過對應用函數系列的“智能”調用來替換以下for循環
for (i in 1:nrow(sym[1:10])){
sym$TS[i] <- getTickSize(sym$Mid[i],index(sym)[i])
}
任何指針? 我的所有嘗試都遇到以下警告:
the condition has length > 1 and only the first element will be used
我相信在這種情況下, mapply
是最簡單的解決方案:
sym$TS<-mapply(getTickSize, sym$Mid, index(sym))
注意: *apply
系列函數並不總是比一個簡單的循環更好(大多數關於那個日期的神話回到早期版本的S)。
但我承認它看起來更性感。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.