r-索引xts时间序列的集合



我有一个名为"data_ts"的大型xts时间序列文件。绘制

plot(data_ts)

一切都很好。当{t1,t2}在边界内时,我也可以绘制子集:

plot(data_ts[t1:t2))

然而,有了5个子集,我试图使用列表理解(在R中由libary(comprehenr)促进;顺便说一句,g(...) %=% c(...)是由library(tidytidbits)促进的类似Python的元组分配(将它们收集在一个列表中(…是的,我来自Python…(:

data_csv <- read.csv("timeseries.csv", header=TRUE)
segm_csv <- read.csv("ts_segments.csv", header=TRUE)
data_ts <- xts(data_csv$Max.Pressure, order.by=as.POSIXct(data_csv$Datetime))
data_ts_idx <- index(data_ts)
data_ts_segm <- to_list(for (i in 1:5)
{
g(m, n)  %=% c(segm_csv[i,1], segm_csv[i,2])
g(t1,t2) %=% c(data_ts_idx[m], data_ts_idx[n])
print(str_interp("period segment ${i}: ${t1} - ${t2}", list(i=i,t1=t1,t2=t2)))
data_ts[m:n]
}
)

然后,当试图绘制时间序列段时,会发生以下情况:

> plot(data_ts_segm[1])
Error in xy.coords(x, y, xlabel, ylabel, log) : 
'x' is a list, but does not have components 'x' and 'y'
> 

显然,R的to_list()不能像Python的list()那样工作:存储在其中的对象发生了一些事情。问题:如何为xts对象的集合编制索引?

(记录中,两个对象的结构相同:

> str(data_ts_segm[1])
List of 1
$ :An ‘xts’ object on 2021-01-01 00:10:54/2021-01-22 02:59:07 containing:
Data: num [1:618, 1] 75.5 71.9 73.5 73.8 73.8 ...
Indexed by objects of class: [POSIXct,POSIXt] TZ: 
xts Attributes:  
NULL
> str(data_ts[1:n])
An ‘xts’ object on 2021-01-01 00:10:54/2021-01-22 02:59:07 containing:
Data: num [1:618, 1] 75.5 71.9 73.5 73.8 73.8 ...
Indexed by objects of class: [POSIXct,POSIXt] TZ: 
xts Attributes:  
NULL

)

我刚刚发现问题是我误解了R的列表结构,这很有效:plot(data_ts_segm[[1]])(即嵌套索引(。R的列表本质上是2D结构;事实上,与Python不同。

最新更新