我是R编程新手,我正在努力处理财务数据。目前我已经构建了多个xts对象,每天包含Close,High,Open和Low价格,并且我已将多个xts对象存储在一个列表(称为Data)中,以便我可以轻松访问它们。
现在我想创建一个更大的xts对象,它只包含" Close"列表中所有xts对象的价格(可能有不同的日期,在这种情况下NA将是输出)
我尝试使用应用功能,但无济于事。
sapply(Data,function(x) merge(x,"[[", [,"CLOSE"]))
代码不编译并抛出错误,但我认为它应该像这样工作。真的很感激任何帮助。谢谢
答案 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