Для Loop in R импортируйте несколько CSV из URL - PullRequest
0 голосов
/ 05 июля 2018

Я импортирую 500 csv, которые имеют следующий подобный формат:

"https://www.quandl.com/api/v3/datasets/WIKI/stockname/data.csv?column_index=11&transform=rdiff&api_key=keyname"

Где stockname - это тикер символа одной акции. У меня есть список биржевых тикеров, сохраненных в фрейме данных, который называется stocklist.

Я бы хотел использовать lapply для перебора моего списка акций. Вот что у меня есть:

lst <- lapply(stocklist, function(i){
  url <- paste0("https://www.quandl.com/api/v3/datasets/WIKI/",i,"/data.csv?column_index=11&transform=rdiff&api_key=XXXXXXXXXXXXXXX")
  spdata <- read.csv(url, stringsAsFactors = FALSE)

})

Я получаю следующую ошибку:

Error in file(file, "rt") : invalid 'description' argument

Что может быть причиной этой ошибки? Я также попытался использовать цикл for, но безуспешно, и мне сказали, что lapply - лучший метод в R для задач такого типа.

Редактировать:

Структура биржевого списка:

> dput(droplevels(head(stocklist)))
structure(list(`Ticker symbol` = c("MMM", "ABT", "ABBV", "ABMD", 
"ACN", "ATVI")), .Names = "Ticker symbol", row.names = c(NA, 
6L), class = "data.frame")

Второе редактирование (решение):

stockdata<-lapply(paste0("https://www.quandl.com/api/v3/datasets/WIKI/",stocklist[1][[1]],"/data.csv?column_index=11&transform=rdiff&api_key=XXXXXXX"),read.csv,stringsAsFactors=FALSE)

Добавить имена в stockdata:

names(stockdata)<-stocklist[1][[1]]

Ответы [ 2 ]

0 голосов
/ 18 июля 2018

Я не могу сказать, что я, но я предполагаю, что это число. Можете ли вы попробовать это и посмотреть, работает ли это для вас? Я думаю, что это довольно близко. Просто убедитесь, что URL-адрес соответствует шаблону фактического URL-адреса, с которого вы извлекаете данные. Я пытался найти это; Я не смог его найти.

seq <- c(1:10)

for (value in seq) {

mydownload <- function (start_date, end_date) {
  start_date <- as.Date(start_date)  ## convert to Date object
  end_date <- as.Date(end_date)  ## convert to Date object
  dates <- as.Date("1970/01/01") + (start_date : end_date)  ## date sequence
  ## a loop to download data
  for (i in 1:length(dates)) {
    string_date <- as.character(dates[i])
    myfile <- paste0("C:/Users/Excel/Desktop/", string_date, ".csv")
    string_date <- gsub("-", "-", string_date)  ## replace "-" with "/"
    myurl <- paste("https://www.quandl.com/api/v3/datasets/WIKI/", i, "/data.csv?column_index=11&transform=rdiff&api_key=xxxxxxxxxx", sep = "")
    download.file(url = myurl, destfile = myfile, quiet = TRUE)
    }
  }

}
0 голосов
/ 05 июля 2018

Я считаю, что ваша переменная 'i' - это вектор.

Убедитесь, что вы выполняете суб-сценарий правильно и пропускаете только одну акцию за раз.

Это: i будет выглядеть примерно так: i[x]

...