Что вы можете сделать, это использовать lapply
и использовать это для вызова getSymbols
с na.omit
вокруг него. Теперь, когда вы вызываете getSymbols
, объект будет помещен непосредственно в вашу среду, и na.omit не сможет найти что-либо для своей работы, но вы не получите предупреждение / ошибку. Если вы используете auto.assign = FALSE
при использовании getSymbols
, вы можете присвоить значения самостоятельно, и возвращаемый результат из getSymbols
может быть передан в na.omit
. Вы по-прежнему будете получать предупреждение о том, что SAF.PA имеет пустые значения, но в списке значения будут удалены.
РЕДАКТИРОВАТЬ на основе скрипта github
Одна из акций (EI.PA) в списке акций выдает ошибку, которую нельзя загрузить. Я добавил try
вокруг функции, чтобы поймать это, чтобы оно продолжалось со следующей акции.
library(quantmod)
underlyings <- c("^STOXX50E", "ALV.DE", "G.MI", "BMW.DE", "SU.PA", "ENI.MI", "IBE.MC", "ORA.PA", "DBK.DE",
"BAYN.DE", "ENEL.MI", "AI.PA", "DTE.DE", "BN.PA", "SAF.PA", "BBVA.MC","PHIA.AS",
"OR.PA", "ASML.AS", "DPW.DE", "AIR.PA", "BNP.PA", "INGA.AS", "ENGI.PA", "ABI.BR",
"EI.PA", "SAN.PA", "CA.PA", "ITX.MC", "MC.PA", "FRE.DE")
my_data <- lapply(underlyings, function(x) try(na.omit(getSymbols(x, from="2016-01-01", to="2019-01-08", auto.assign = FALSE))))
names(my_data) <- underlyings
sapply(my_data, function(x) sum(is.na(x)))
Warning: EI.PA download failed; trying again.
Error : EI.PA download failed after two attempts. Error message:
HTTP error 404.
In addition: Warning messages:
1: ^STOXX50E contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them.
2: SU.PA contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them.
3: SAF.PA contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them.
4: ASML.AS contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them.
Warning message:
SAN.PA contains missing values. Some functions will not work if objects contain missing values in the middle of the series. Consider using na.omit(), na.approx(), na.fill(), etc to remove or replace them.
# show number of empty values
sapply(my_data, function(x) sum(is.na(x)))
sapply(my_data, function(x) sum(is.na(x)))
^STOXX50E ALV.DE G.MI BMW.DE SU.PA ENI.MI IBE.MC ORA.PA DBK.DE BAYN.DE ENEL.MI AI.PA DTE.DE
0 0 0 0 0 0 0 0 0 0 0 0 0
BN.PA SAF.PA BBVA.MC PHIA.AS OR.PA ASML.AS DPW.DE AIR.PA BNP.PA INGA.AS ENGI.PA ABI.BR EI.PA
0 0 0 0 0 0 0 0 0 0 0 0 0
SAN.PA CA.PA ITX.MC MC.PA FRE.DE
0 0 0 0 0
Чтобы удалить ошибки из списка:
my_data[which(sapply(my_data, function(x) inherits(x, "try-error")) == TRUE)] <- NULL
# to create one big xts object:
my_big_xts <- Reduce(cbind, my_data)
Но если вы хотите, чтобы в tidy data.frame было несколько тикеров, возможно, вы захотите взглянуть на пакет tidyquant.