我正在尝试扩展我的时间序列图的X轴,以便为以后在图中添加新数据做好准备.但是,无论我尝试什么,我都会在plot.window(...)中得到错误:无效的'xlim'值错误.
这是一个最小的代码片段:
数据构建:
time_series <- xts(rnorm(100),seq(as.POSIXct("2012-01-01 00:00:00"), as.POSIXct("2012-01-05 03:00:00"), by="hour"))
Run Code Online (Sandbox Code Playgroud)
绘图:
plot(time_series, type='l');
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,结果是一个很好的时间序列图.
现在,我想扩展x轴,我试过:
xlim <- seq(as.POSIXct("2012-01-01 00:00:00"), as.POSIXct("2012-01-06 03:00:00"), by="hour")
plot <- (time_series, xlim = xlim, type='l')
Run Code Online (Sandbox Code Playgroud)
但这不起作用,但会导致plot.window(...)出错:无效的'xlim'值.
尝试以下结果会导致同样的错误:
xlim <- c(as.POSIXct("2012-01-01 00:00:00"), as.POSIXct("2012-01-05 00:00:00"))
Run Code Online (Sandbox Code Playgroud)
从文档中我知道xlim必须是数字,并且可以设置为xlim = c(0,100)但是在使用xts数据时它是如何工作的?
编辑:我知道这个问题类似于时间序列绘图范围的问题.但是,由于我不知道将来需要绘制的数据,我对这个特定的解决方案感兴趣.
我想出了一个奇怪的错误.假设我在名为data的列表中有10个xts对象.我现在使用搜索每三个组合
data_names <- names(data)
combs <- combn(data_names, 3)
Run Code Online (Sandbox Code Playgroud)
我的基本目标是在这些1080三元组上进行PCA.为了加快速度,我想使用doParallel包.所以这里是缩短的片段,直到发生错误:
list <- foreach(i=1:ncol(combs)) %dopar% {
tmp_triple <- combs[,i]
p1<-data[tmp_triple[[1]]][[1]]
p2<-data[tmp_triple[[2]]][[1]]
p3<-data[tmp_triple[[3]]][[1]]
data.merge <- merge(p1,p2,p3,all=FALSE)
}
Run Code Online (Sandbox Code Playgroud)
这里,合并功能似乎是问题所在.错误是
任务1失败 - "无法将类c("xts","zoo")强制转换为data.frame"
但是,当将%dopar%更改为正常序列%do%时,一切都可以接受.
直到现在我无法找到任何解决这个问题的方法,我甚至不确定要寻找什么.