r - 将列表缩减为按时间排序的 xts 对象
问题描述
我在列表中有一些数据,如下所示:
> y
$ABMD.Rank
ABMD.Rank
$ATVI.Rank
ATVI.Rank
$ADBE.Rank
ADBE.Rank
$AMD.Rank
AMD.Rank
2020-04-01 17:00:00 22
$AKAM.Rank
AKAM.Rank
$ALXN.Rank
ALXN.Rank
$ALGN.Rank
ALGN.Rank
$LNT.Rank
LNT.Rank
$AMZN.Rank
AMZN.Rank
$AAL.Rank
AAL.Rank
$AMGN.Rank
AMGN.Rank
$ADI.Rank
ADI.Rank
$ANSS.Rank
ANSS.Rank
$AAPL.Rank
AAPL.Rank
2020-03-31 17:00:00 22
我想将列表缩减为xts
具有预期输出的对象或数据框:
2020-03-31 15:30:00 CHRW.Rank
2020-03-31 17:00:00 AAPL.Rank
2020-04-01 17:00:00 AMD.Rank
2020-04-01 21:00:00 CDNS.Rank
2020-04-02 18:00:00 CTXS.Rank
2020-04-03 19:00:00 CTAS.Rank
2020-04-06 17:00:00 BKNG.Rank
哪个是按时间排序的。
数据:
myList <- list(ABMD.Rank = structure(numeric(0), class = c("xts", "zoo"
), .indexCLASS = c("POSIXct", "POSIXt"), tclass = c("POSIXct",
"POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "ABMD.Rank")),
ATVI.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "ATVI.Rank")),
ADBE.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "ADBE.Rank")),
AMD.Rank = structure(22, class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(1585753200, tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = c(1L, 1L), .Dimnames = list(NULL, "AMD.Rank")),
AKAM.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "AKAM.Rank")),
ALXN.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "ALXN.Rank")),
ALGN.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "ALGN.Rank")),
LNT.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "LNT.Rank")),
AMZN.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "AMZN.Rank")),
AAL.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "AAL.Rank")),
AMGN.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "AMGN.Rank")),
ADI.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "ADI.Rank")),
ANSS.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "ANSS.Rank")),
AAPL.Rank = structure(22, class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(1585666800, tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = c(1L, 1L), .Dimnames = list(NULL, "AAPL.Rank")),
AMAT.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "AMAT.Rank")),
ADSK.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "ADSK.Rank")),
ADP.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "ADP.Rank")),
BIIB.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "BIIB.Rank")),
BKNG.Rank = structure(22, class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(1586185200, tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = c(1L, 1L), .Dimnames = list(NULL, "BKNG.Rank")),
AVGO.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "AVGO.Rank")),
CHRW.Rank = structure(22, class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(1585661400, tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = c(1L, 1L), .Dimnames = list(NULL, "CHRW.Rank")),
CDNS.Rank = structure(22, class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(1585767600, tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = c(1L, 1L), .Dimnames = list(NULL, "CDNS.Rank")),
CDW.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "CDW.Rank")),
CERN.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "CERN.Rank")),
CHTR.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "CHTR.Rank")),
CINF.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "CINF.Rank")),
CTAS.Rank = structure(22, class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(1585933200, tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = c(1L, 1L), .Dimnames = list(NULL, "CTAS.Rank")),
CSCO.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "CSCO.Rank")),
CTXS.Rank = structure(22, class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(1585843200, tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = c(1L, 1L), .Dimnames = list(NULL, "CTXS.Rank")),
CME.Rank = structure(numeric(0), class = c("xts", "zoo"), .indexCLASS = c("POSIXct",
"POSIXt"), tclass = c("POSIXct", "POSIXt"), .indexTZ = "", tzone = "", index = structure(numeric(0), tzone = "", tclass = c("POSIXct",
"POSIXt")), .Dim = 0:1, .Dimnames = list(NULL, "CME.Rank")))
解决方案
这不太优雅,但我相信它有效。
valid <- as.logical(sapply(myList,length))
rows <- lapply(myList[valid],function(x){
y <- as.data.frame(x);
time <- rownames(y);
name <- names(x);
c(time,name)
})
do.call(rbind,rows)
# [,1] [,2]
#AMD.Rank "2020-04-01 11:00:00" "AMD.Rank"
#AAPL.Rank "2020-03-31 11:00:00" "AAPL.Rank"
#BKNG.Rank "2020-04-06 11:00:00" "BKNG.Rank"
#CHRW.Rank "2020-03-31 09:30:00" "CHRW.Rank"
#CDNS.Rank "2020-04-01 15:00:00" "CDNS.Rank"
#CTAS.Rank "2020-04-03 13:00:00" "CTAS.Rank"
#CTXS.Rank "2020-04-02 12:00:00" "CTXS.Rank"
推荐阅读
- html - html表单将输入字段与复选框对齐
- amazon-web-services - AWS“堆栈计数”与“管理员帐户的堆栈计数”限制
- java - 为什么当我看到通配符条目时出现 javax.net.ssl.SSLHandshakeException: No subject Alternative DNS name matching found 异常
- c++ - Win32 GUI C(++) 应用程序将 stdout 和 stderr 重定向到磁盘上的同一个文件
- ios - 如何在应用商店更改开发者网站
- html - 有没有办法在不损失图像质量的情况下调整轮播图像的大小?
- css - 如何根据 CSS 类的值动态应用填充值?
- php - 使用 Redis 作为会话存储时,如何在 actix-session 和 PHP 应用程序之间共享会话?
- android - Expo-Vector-Icons 出现在我的 Snack 上,但在 Android 构建的应用程序中显示为问号或汉字
- python - 使用 Search API,有没有办法排除所有元数据字段并只返回 _source 内的内容?