对于 R 中的循环,从 URL 导入多个 CSV
For Loop in R import multiple CSV from URL
我正在导入具有以下类似格式的 500 个 csv:
其中 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)
将名称添加到库存数据:
names(stockdata)<-stocklist[1][[1]]
我相信你的 'i' 变量是一个向量。
确保你正确地对其进行了下标并且一次只传递一只股票。
这:i
看起来像这样:i[x]
我不知道我是什么,但我猜它是一个数字。你能试试看它是否适合你吗?我认为它非常接近。只需确保 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)
}
}
}
我正在导入具有以下类似格式的 500 个 csv:
其中 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)
将名称添加到库存数据:
names(stockdata)<-stocklist[1][[1]]
我相信你的 'i' 变量是一个向量。
确保你正确地对其进行了下标并且一次只传递一只股票。
这:i
看起来像这样:i[x]
我不知道我是什么,但我猜它是一个数字。你能试试看它是否适合你吗?我认为它非常接近。只需确保 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)
}
}
}