3

嗨,我的 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 设计为单个数字(不是数组)的函数。

如果可能的话,我希望通过对 apply 系列函数的“智能”调用来替换以下 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 
4

1 回答 1

1

我相信在这种情况下,mapply是最简单的解决方案:

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

注意:*apply函数族并不总是比简单的循环更好(大多数关于它的神话可以追溯到早期版本的 S)。

但我承认它看起来更性感。

于 2011-10-13T07:01:05.113 回答