1

这是一个从这个(R:从成员资格更改列表中重新创建历史成员资格)问题继续的问题。

那里讨论的问题实际上源于对金融的普遍兴趣问题,我们通常拥有指数的成员股票,然后指数成员资格发生变化。通常我们希望重新创建此成员资格,而手头的数据是当前成员资格和更改日期。

但是,典型的问题是为定期时间序列(例如每天、每周等)生成此成员资格,而更改本身就是不规则时间序列。

上面链接的问题中建议的方法可以在这里以这样的方式使用:

  1. 在所有已知的更改时间查找成员资格。
  2. 以所需的频率创建一系列偏好的时间类。
  3. 使用成员资格的最后一个已知变化复制序列中每次的成员资格。

我想为函数编写函数方法,该recreate.memship函数可以indx在 R 中的任何时间序列类中执行正确的操作。我能想到的一种方法是为每个已知类定义一个方法,例如ts, Date, zoo, xts, 。 ..seq存在方法。

在这个冗长的讨论之后的问题是双重的:

  1. 是否有一种聪明的方法来定义方法,这样我就不必为每个已知的时间类编写新方法。(释义,比我聪明的程序员如何设计这个?)
  2. 这个问题/问题类别是否有已知的解决方案?
4

1 回答 1

2

xts 已经允许这样做。查看第 4 节包小插图

基本上,您try.xts在函数的开头和reclass结尾调用。我在 TTR 包中使用了这个范例。例如:

R> momentum
function (x, n = 1, na.pad = TRUE) 
{
    x <- try.xts(x, error = as.matrix)
    if (is.xts(x)) {
        mom <- diff(x, n, na.pad = na.pad)
    }
    else {
        NAs <- NULL
        if (na.pad) {
            NAs <- rep(NA, n)
        }
        mom <- c(NAs, diff(x, n))
    }
    reclass(mom, x)
}
<environment: namespace:TTR>
于 2013-07-10T11:39:02.000 回答