簡體   English   中英

在xts上用apply系列函數替換for循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM