n.e*_*e.w 10 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 10 10
2011-01-02 20 20
2011-01-03 30 30
2011-01-04 40 40
2011-01-05 50 50
Run Code Online (Sandbox Code Playgroud)
有一个简短的时间序列列表,只需写:
m <- merge(ABC.oc,ABD.oc,all=FALSE)
Run Code Online (Sandbox Code Playgroud)
但显然这对200个单独的对象来说是不切实际的,所以我想编写一个循环来将所有这些对象粉碎在一起,就像"merge"一样.
很容易访问循环的变量,for i in length(ls(pattern="*.oc")){但只是无法找出循环的其余部分.我试过cbind,但似乎无法做到正确.
任何帮助非常感谢
Jos*_*ich 15
这可以通过获取名称结尾的所有对象的字符向量.oc,将它们放入列表,然后调用mergevia来实现do.call.
# 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
Run Code Online (Sandbox Code Playgroud)
如果您将xts对象加载到List(objList)中,并且从API接收它们,则使用此方法会更容易.然后你只需要do.call(merge, objList).
| 归档时间: |
|
| 查看次数: |
4401 次 |
| 最近记录: |