0

重複の可能性:
複数の CSV ファイルを別々のデータ フレームに読み込む

URL の一部を for ループで埋めるにはどうすればよいですか。たとえば、次の 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 に答える