如何通过R中的循环/函数合并大量xts对象?

如何通过R中的循环/函数合并大量xts对象?,r,time-series,xts,R,Time Series,Xts,我有一个循环,通过调用API提取约200个单独的时间序列 循环将时间序列作为xts对象(library(xts))输出到带有后缀“.oc”的全局环境中。因此,我有200个xts对象,形式为“ABC.oc”、“ABD.oc”等。每个对象包含1000行数据 我想做的是编写一个循环(或使用适当的函数),它接受所有“*.oc”对象并按列合并它们。IE最终会: Date ABC.oc ABD.oc -> 200 columns like this 2011-01-01

我有一个循环,通过调用API提取约200个单独的时间序列

循环将时间序列作为xts对象(
library(xts)
)输出到带有后缀“.oc”的全局环境中。因此,我有200个xts对象,形式为“ABC.oc”、“ABD.oc”等。每个对象包含1000行数据

我想做的是编写一个循环(或使用适当的函数),它接受所有“*.oc”对象并按列合并它们。IE最终会:

Date           ABC.oc    ABD.oc -> 200 columns like this
2011-01-01      10         10
2011-01-02      20         20
2011-01-03      30         30
2011-01-04      40         40
2011-01-05      50         50
在一个简短的时间序列列表中,您只需写:

m <- merge(ABC.oc,ABD.oc,all=FALSE)

m这样的循环应该可以工作。不过,最好先初始化它

library(xts)

m <- xts(matrix(vector(length=length(ls(pattern="*.oc")) * 
  nrow(get(ls(pattern="*.oc")[1]), ncol=nrow(get(ls(pattern="*.oc")[1])), 
  order.by=index(get(ls(pattern="*.oc")[1]))

for (i in 1:length(ls(pattern="*.oc"))) {
  m[, i]  <- get(ls(pattern="*.oc")[i])
}
库(xts)

m这可以通过获取名称以
.oc
结尾的所有对象的字符向量,将它们放入列表中,然后通过
do.call调用
merge
来实现

# Make up some data
set.seed(21)
x.oc <- xts(rnorm(10), Sys.Date()-10:1)
y.oc <- xts(rnorm(10), Sys.Date()-10:1)
z.oc <- xts(rnorm(10), Sys.Date()-10:1)
x <- y <- z <- 1:10

objNames <- ls(pattern="*oc$")    # object names
objList <- lapply(objNames, get)  # list of objects
names(objList) <- objNames        # assign names to list
do.call(merge, objList)           # merge all objects in list
#编一些数据
种子(21)

x、 oc这太棒了,我会试试看。如果我想将长度从1000行概括为任意/动态长度,你会有什么建议?@n.e.w我所做的编辑将概括对象的数量和它们所拥有的行数,
x@jbaums:它们表示全局环境中与所需对象模式不匹配的潜在对象。