gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:13:12 25 4
gpt4 key购买 nike

我有一个循环,可以通过调用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)

但是显然这对于​​200个单独的对象来说是不切实际的,因此我想编写一个循环来像“合并”一样将所有这些对象粉碎在一起。

很容易通过 for i in length(ls(pattern="*.oc")){访问循环的变量,但无法弄清楚循环的其余部分。
我尝试了cbind,但似乎无法正确处理。

任何帮助,不胜感激

最佳答案

这可以通过获取名称以.oc结尾的所有对象的字符向量,将它们放在列表中,然后通过merge调用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

如果从API接收到xts对象并将它们加载到列表( objList)中,则使用此方法会更容易。然后,您只需要 do.call(merge, objList)即可。

关于r - 如何通过R中的循环/函数合并大量xts对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6379778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com