NA
我需要从 n 天后的 xts 对象中获取数据行,如果 n 天后的行不存在或填充有s ,则向后跳过。
这是一个示例数据集。
require(xts)
set.seed(1)
ddf <- data.frame('1m' = rnorm(25), '3m' = rnorm(25))
xxd <- xts(ddf, seq(as.Date('2013-07-27'), length.out = 25, by='day'))
xxd[sample(1:25, 8), ] <- NA
xxd <- xxd[-sample(1:25, 3), ]
该xts
对象xxd
既没有 8 月 19 日也没有 8 月 18 日,8 月 17 日就是全部NA
,所以我想在 8 月 16 日返回。为此,我将通过分配给环境使用的东西拼凑在一起,但这没有t 看起来非常R
(或非常实用) - 这样做的正确方法是什么?
rewindX <- function(Xts, dayRew = 1)
{
flipDates <- function(dayRew)
{
assign('newX', Xts[index(last(Xts)) - dayRew], envir = outXenv)
if(!length(which(!is.na(outXenv$newX))))
{
dayRew <- dayRew + 1
flipDates(dayRew)
}
}
outXenv <- new.env(parent = .GlobalEnv)
flipDates(dayRew)
return(outXenv$newX)
}
所以要倒带,我给出rewindX(xxd, 1)
并获得一行。
这里有两个例子:
> rewindX(xxd, 1)
X1m X3m
2013-08-16 0.9189774 -0.7074952
> rewindX(xxd, 10)
X1m X3m
2013-08-08 -0.6212406 -0.0593134
非常感谢您的指导。