У меня есть некоторые xts
данные, и я хочу выполнить вычисление по каждому из столбцов. Скажем, у меня есть некоторые дневные цены закрытия, такие как:
TSLA.Close AMZN.Close MSFT.Close
2017-01-03 216.99 753.67 62.58
2017-01-04 226.99 757.18 62.30
2017-01-05 226.75 780.45 62.30
2017-01-06 229.01 795.99 62.84
Я хочу применить некоторую функцию, чтобы, если сегодняшнее закрытие выше, чем вчерашнее, тогда поставьте 1, иначе 0 и сохраните результаты в новом xts
объект.
У меня есть следующее - которое преобразует объект xts
в numeric
- если я изменю apply
на lapply
, я получу список.
Однако я хотел бы просто вернуться объект xts
, аналогичный объекту daily_close
xts
.
Данные:
library(xts)
library(quantmod)
start_date <- "2017-01-01"
end_date <- "2020-01-01"
symbols = c("TSLA", "AMZN", "MSFT")
dataEnv <- new.env()
getSymbols(symbols,
from = start_date,
to = end_date,
#src = "yahoo",
#adjust = TRUE,
#env = dataEnv
)
daily_close <- do.call(merge, lapply(symbols, function(x) Cl(get(x))))
# todays close greater than yesterdays close
x <- apply(daily_close, 2, FUN = function(x) ifelse (x > lag.xts(x), 1, 0))