我在使用列表时遇到了一些问题,而unlist()似乎并没有解决它。
这是问题所在:我使用lapply()在列表上执行一个函数。此函数按特定标准拆分 xts 对象,因此它返回两个 xts 对象的列表。lapply()的结果列表由多个子列表组成(在我的示例中:输出看起来很像list.2)
例子:
library(xts)
#create three dummy xts objects
a<-c(1:10)
b<-c(2:5)
c<-c(6:9)
a.by<-as.POSIXct(a, tz="GMT", origin="1990-01-01 00:00:00")
b.by<-as.POSIXct(b, tz="GMT", origin="1990-01-01 00:00:00")
c.by<-as.POSIXct(c, tz="GMT", origin="1990-01-01 00:00:00")
xts.a<-xts(a, order.by=a.by)
xts.b<-xts(b, order.by=b.by)
xts.c<-xts(c, order.by=c.by)
# creating first list of objects a & b. this is passed to my function
list.1<-list(xts.a, xts.b)
# creating second list of objects a & b, c. this is similar to my output
list.2<-list(list.1, xts.c)
目标:我想将这些 xts 对象传递给其他函数。我需要主列表和所有子列表中所有 xts 对象的列表。在我的示例中,我想要list(xts.a, xts.b, xts.c)。我想对子列表进行子集化,将其和主列表分解并与部分(xts 对象)一起重新列出。
问题:由于数据加载,我正在尝试自动执行此操作,而不仅仅是上面的问题。因此,对于不止一个子列表,而不是具体按此顺序,或者列表中只有三个对象。
想法:我尝试过使用class() -> list.2[class(list.2)=="list"]
创建子集向量(到目前为止这似乎效果最好) -> subset_vector<-lapply(list.2, class)然后使用这个向量(加上一个序列)来挑选列表 -> list.2[[sequence[子集向量==“列表”]]]
但这一切似乎太复杂了,必须有一个更简单的解决方案吗?
在此先感谢您的帮助!
本