0

可能重复:
将多个 CSV 文件读入单独的数据帧

如何用 for 循环填充部分 URL,我尝试了一个有效的 URL,例如:

data <- read.table("http://somelink.php?station=2&start=2012-01-01&etc", header=T,sep="|")

但是当我将代码更改为循环时,它失败了:

station <- c(1:10)
Year <- format(Sys.time(), "%Y")

for (i in station){
data <- read.table("http://somelink.php?station=i&start=Year-01-01&etc", header=T,sep="|")
}
4

2 回答 2

3

问题是您的迭代器i在引号内,因此没有按预期进行评估。采用paste0(.)


此外,您可能希望您的变量data类似于列表。而且也许不叫data

myData <- list(length = length(station))
for (i in station){
  urli <- paste0("http://somelink.php?station=", i, "&start=Year-01-01&etc")
  myData[[i]] <- read.table(urli, header=T,sep="|")
}

编辑(mnel)

或更惯用的说法

urls <-paste0("http://somelink.php?station=",station, "&start=", Year, "01-01&etc")
myData <- lapply(urls, read.table, header = TRUE, sep = '|')
于 2012-11-28T00:23:14.123 回答
1

我偏爱这个sprintf函数,因为很容易看到最终字符串的样子:

station_data <- list()
for (i in station) {
  station_data[[i]] <- read.table(sprintf("http://somelink.php?station=%s&start=Year-01-01&etc", i), 
    header=TRUE, sep="|")
}
于 2012-11-28T00:58:42.230 回答