首页 > 解决方案 > 将列表缩减为按时间排序的 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")))

标签: r

解决方案


这不太优雅,但我相信它有效。

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"

推荐阅读