2017-02-04 29 views
1

我可以为纽约交易所生成一个timeDate对象的列表。但是,大多数分析功能期望一个单一的对象。底层的数据表示是POSIXct,所以我不能将它们附加为向量或列表。如何将timeDate列表合并到单个timeDate中?

怎么办?

library(timeDate) 
x <- lapply(c(1885: 1886), holidayNYSE) 
x 

[[1]] 
NewYork 
[1] [1885-01-01] [1885-02-23] [1885-04-03] [1885-11-03] [1885-11-26] [1885-12-25] 

[[2]] 
NewYork 
[1] [1886-01-01] [1886-02-22] [1886-04-23] [1886-05-31] [1886-07-05] [1886-11-02] [1886-11-25] 

class(x[[1]]) 
[1] "timeDate" 
attr(,"package") 
[1] "timeDate" 

class(x[[1]]@Data) 
[1] "POSIXct" "POSIXt" 

# ??? How to my two datetime objects ??? 

回答

1

我们可以使用do.callc

x1 <- do.call(c, x) 
x1 
#NewYork 
#[1] [1885-01-01] [1885-02-23] [1885-04-03] [1885-11-03] [1885-11-26] [1885-12-25] [1886-01-01] [1886-02-22] [1886-04-23] [1886-05-31] [1886-07-05] [1886-11-02] 
#[13] [1886-11-25] 

str(x1) 
#Formal class 'timeDate' [package "timeDate"] with 3 slots 
# [email protected] Data  : POSIXct[1:13], format: "1885-01-01 05:00:00" "1885-02-23 05:00:00" "1885-04-03 05:00:00" "1885-11-03 05:00:00" ... 
# [email protected] format : chr "%Y-%m-%d" 
# [email protected] FinCenter: chr "NewYork" 

和OP的list的结构

str(x) 
#List of 2 
#$ :Formal class 'timeDate' [package "timeDate"] with 3 slots 
# .. [email protected] Data  : POSIXct[1:6], format: "1885-01-01 05:00:00" "1885-02-23 05:00:00" "1885-04-03 05:00:00" "1885-11-03 05:00:00" ... 
# .. [email protected] format : chr "%Y-%m-%d" 
# .. [email protected] FinCenter: chr "NewYork" 
# $ :Formal class 'timeDate' [package "timeDate"] with 3 slots 
# .. [email protected] Data  : POSIXct[1:7], format: "1886-01-01 05:00:00" "1886-02-22 05:00:00" "1886-04-23 05:00:00" "1886-05-31 05:00:00" ... 
# .. [email protected] format : chr "%Y-%m-%d" 
# .. [email protected] FinCenter: chr "NewYork" 
+0

其实我已经在我的名单100+对象。 'do.call'是否可以使用这些数量的对象? – SmallChess

+0

@StudentT它应该工作,如果他们都具有相同的结构。手动方式是'c(x [[1]],x [[2]])'我们在这里避免 – akrun

相关问题