合并列表

时间:2018-04-04 04:38:13

标签: r list apply xts

我是R编程新手,我正在努力处理财务数据。目前我已经构建了多个xts对象,每天包含Close,High,Open和Low价格,并且我已将多个xts对象存储在一个列表(称为Data)中,以便我可以轻松访问它们。

现在我想创建一个更大的xts对象,它只包含" Close"列表中所有xts对象的价格(可能有不同的日期,在这种情况下NA将是输出)

我尝试使用应用功能,但无济于事。

sapply(Data,function(x) merge(x,"[[", [,"CLOSE"]))

代码不编译并抛出错误,但我认为它应该像这样工作。真的很感激任何帮助。谢谢

1 个答案:

答案 0 :(得分:0)

您可以在merge中使用Reduce

# Sample data
set.seed(2018);
dates <- seq(as.Date("2018/01/01"), by = "day", length.out = 5);
Data <- lapply(1:5, function(x)
    xts(x = data.frame(Close = rnorm(5), High = rnorm(5)), order.by = dates))

# Merge
Reduce(function(x, y) merge(x, y, all = TRUE), lapply(Data, function(x) x[, "Close"]));
#                 Close    Close.1    Close.2    Close.3    Close.4
#2018-01-01 -0.42298398 -0.6430347  1.2638637 -0.2284119 -0.3594423
#2018-01-02 -1.54987816 -1.0300287  0.2501979  1.1786797 -1.2995363
#2018-01-03 -0.06442932  0.7124813  0.2581954 -0.2662727 -0.8698701
#2018-01-04  0.27088135 -0.4457721  1.7855342  0.5281408  1.0543623
#2018-01-05  1.73528367  0.2489796 -1.2197058 -1.7686592 -0.1486396