【发布时间】:2013-07-24 14:03:57
【问题描述】:
我在使用列表时遇到了一些问题,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 然后使用这个向量(加上一个序列)来挑选列表 -> list.2[[sequence[subset_vector=="list"]]]
但这一切似乎太复杂了,一定有更简单的解决方案吗?
提前感谢您的帮助!
本
【问题讨论】:
-
这是一个很好的第一个问题。让他们来吧,Ben K!