循环 R 中的时间序列对象
Loop over time-series object in R
我有一个时间序列对象:
seq <- seq(as.POSIXct("2015-09-01"),as.POSIXct("2015-09-02"), by = "120 mins")
ob <- xts(rnorm(length(seq)),seq) # xts object
ob
的一个重要 属性 是它实时更新,即,使用 rbind
将新观察附加到它。因此,我不知道这个对象的确切长度。现在,我想逐行读取 ob
并执行我需要的操作。假设我将读取 ob
行,然后将该行添加到另一个静态时间序列 (xts
) 对象。我应该如何逐行阅读 ob
?到现在为止,我接近它作为
i <- 1
l <- ob[i,]
while(NROW(l)) # Check I have a row to read
{
print(l) # dummy operation
i <- i+1
l <- ob[i,]
}
这段代码完成了它的工作,但它会导致错误,因为
Error in `[.xts`(ob, i, ) : subscript out of bounds
我理解错误。我想知道,有没有更好的方法来逐行读取 xts
个对象?
这会如你所愿吗?
library(xts)
seq <- seq(as.POSIXct("2015-09-01"),as.POSIXct("2015-09-02"), by = "120 mins")
ob <- xts(rnorm(length(seq)),seq) # xts object
i <- 1
l <- ob[i,]
while(NROW(l))
{
print(l)
i <- i+1
l <- try(ob[i,], silent=TRUE)
if(class(l)[1]=="try-error") break
}
我有一个时间序列对象:
seq <- seq(as.POSIXct("2015-09-01"),as.POSIXct("2015-09-02"), by = "120 mins")
ob <- xts(rnorm(length(seq)),seq) # xts object
ob
的一个重要 属性 是它实时更新,即,使用 rbind
将新观察附加到它。因此,我不知道这个对象的确切长度。现在,我想逐行读取 ob
并执行我需要的操作。假设我将读取 ob
行,然后将该行添加到另一个静态时间序列 (xts
) 对象。我应该如何逐行阅读 ob
?到现在为止,我接近它作为
i <- 1
l <- ob[i,]
while(NROW(l)) # Check I have a row to read
{
print(l) # dummy operation
i <- i+1
l <- ob[i,]
}
这段代码完成了它的工作,但它会导致错误,因为
Error in `[.xts`(ob, i, ) : subscript out of bounds
我理解错误。我想知道,有没有更好的方法来逐行读取 xts
个对象?
这会如你所愿吗?
library(xts)
seq <- seq(as.POSIXct("2015-09-01"),as.POSIXct("2015-09-02"), by = "120 mins")
ob <- xts(rnorm(length(seq)),seq) # xts object
i <- 1
l <- ob[i,]
while(NROW(l))
{
print(l)
i <- i+1
l <- try(ob[i,], silent=TRUE)
if(class(l)[1]=="try-error") break
}