Вызов (xts) объектов / наборов данных / переменных со списком их имен (строк) - PullRequest
0 голосов
/ 01 мая 2020

это, возможно, очень простой вопрос, но я искал Inte rnet часами без какой-либо идеи - вот почему я спрашиваю здесь.

У меня есть csv-файл с биржевыми символами (например, DAI .F, PAH3.F, GRU.F, ...). С помощью пакета Quantmod я получаю исторические данные о запасах от Yahoo, и для каждого биржевого символа в рабочей области создается объект xts с тем же именем, что и у символа.

Моя проблема в том, что я не знаю, как l oop через эти xts-объекты по содержимому csv-файла. Имена хранятся в виде строк в symbols_watchlist

Последняя строка кода является проблемой: stock <- symbols_watchlist[i]

stock должен быть одним из xts-объектов, которые являются важными для каждого л oop. С stock <- symbols_watchlist[i] он просто становится строкой с именем символа из symbols_watchlist - см. Прикрепленную картинку (Пример рабочей области в RStudio).

library(quantmod)
library(tidyquant)
library(readr)

start_date_5year <- Sys.Date()-1826
end_date <- Sys.Date()

watchlist <-  read.csv("D:/Watchlist.csv", header = TRUE, sep = ";")
symbols_watchlist <- watchlist$Yahoo_label

getSymbols(watchlist$Yahoo_label,src='yahoo', from = start_date_5year, to = end_date) 

for (i in 1:length(symbols_watchlist)){
  stock <- symbols_watchlist[i]
}

Пример рабочей области в RStudio

enter image description here

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Вы должны решить, что вы хотите в качестве конечного результата и с какой структурой работать. Вы используете tidyquant, но для получения данных используете getSymbols из Quantmod. Вы можете получить список объектов xts или data.frame со всеми данными.

Используя QuantMod (не требуется тидиквант), выведите список объектов XTS:

library(quantmod)

symbols_watchlist <- c("DAI.F", "GRU.F", "IQ8.F", "PAH3.F")
start_date_5year <- Sys.Date()-1826
end_date <- Sys.Date()

stocks <- lapply(symbols_watchlist, getSymbols, from = start_date_5year, to = end_date, auto.asssign = FALSE)
names(stocks) <- symbols_watchlist

Используя Tidyquant, приведите data.frame:

library(tidyquant)

df_stocks <- tq_get(symbols_watchlist, from = start_date_5year, to = end_date)
0 голосов
/ 01 мая 2020

Вы можете использовать mget, чтобы получить все символы в списке.

list_of_symbols <- mget(symbols_watchlist)

Затем вы можете использовать от lapply до l oop над ними и применять любую функцию к каждому из них.

lapply(list_of_symbols, function(x) {
     #Do something with each symbol
})

Используя for l oop, вы можете сделать это один за другим с get.

for (i in symbols_watchlist) {
   stock <- get(i)
   #Do something with stock
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...