我有 3 個大型 XTS 物件串列:“SMA”;“L”、“丸坊”。快速查看它的外觀:
> names(Marubozu)
[1] "TSLA" "AAPL" "NTES" "GOOGL" "ASML" "GOOG" "NFLX" "ADBE" "AMZN" "MSFT" "ADI" "FB"
> names(SMA)
[1] "TSLA" "AAPL" "NTES" "GOOGL" "ASML" "GOOG" "NFLX" "ADBE" "AMZN" "MSFT" "ADI" "FB"
> names(L)
[1] "TSLA" "AAPL" "NTES" "GOOGL" "ASML" "GOOG" "NFLX" "ADBE" "AMZN" "MSFT" "ADI" "FB"
> head(Marubozu$AAPL, n = 2)
WhiteMarubozu BlackMarubozu
2000-01-03 FALSE FALSE
2000-01-04 FALSE FALSE
> head(SMA$AAPL, n = 2)
UpTrend NoTrend DownTrend Trend
2000-01-03 NA NA NA NA
2000-01-04 NA NA NA NA
> head(L$AAPL, n =2)
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted
2000-01-03 0.936384 1.004464 0.907924 0.999442 535796800 0.856887
2000-01-04 0.966518 0.987723 0.903460 0.915179 512377600 0.784643
我想合并該串列中相應的 XTS 物件,以便創建一個大的 lig 串列。例如,New_List$AAPL 的輸出將是:
AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted WhiteMarubozu BlackMarubozu UpTrend NoTrend DownTrend Trend
2000-01-03 0.936384 1.004464 0.907924 0.999442 535796800 0.856887 0 0 NA NA NA NA
2000-01-04 0.966518 0.987723 0.903460 0.915179 512377600 0.784643 0 0 NA NA NA NA
我試圖創建一個串列串列并合并它,但它沒有用。在這里你可以看到:
#That works for a single ticker AAPL
full <- merge.xts(L$AAPL, Marubozu$AAPL, SMA$AAPL)
#This doesn't work
out3 <- Map(function(x) {full$x <- merge.xts(lista[[1]]$x, lista[[2]]$x)}, lista)
我想這只是一些簡單的 2 行代碼,但無法真正找到解決方案,感謝您的回復!
uj5u.com熱心網友回復:
我們可以這樣做Map- 因為listofxts元素具有相同順序的相同代碼,只需使用Map而不是創建 a listof lists
library(xts)
out <- Map(merge.xts, L, Marubozu, SMA)
uj5u.com熱心網友回復:
這是一個小函式u(),xts它將 -index系結到一個xts物件并轉換為'data.frame'.
u <- function(x) cbind.data.frame(index=index(x), unclass(x))
為了測驗它,我們創建一個使用一些資料sample_matrix附帶xts。我們將前兩列和最后兩列拆分為兩個xts具有相同索引的獨立物件。
library(xts)
data(sample_matrix)
sample.xts <- as.xts(sample_matrix, descr='my new xts object')
S1 <- as.xts(sample_matrix[,1:2]) ##
S2 <- as.xts(sample_matrix[,3:4])
現在我們可以輕松地應用merge并從中創建一個新xts物件。
res <- merge(u(S1), u(S2)) |>
(\(x) xts(x[-1], x$index, descr='my new xts object'))()
class(res)
# [1] "xts" "zoo"
stopifnot(all.equal(res, sample.xts)) ## proof
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/393434.html
上一篇:將格式正確的字串轉換為資料框
下一篇:基于R中資料框中的其他列創建新列
