2

複数のファイルから xts timeseries をロードし、それらを単一の xts マトリックスにマージする次の R コードがあります。

load.files = function(dates, filenames) {
  for( i in 1:length(dates) ) {
  # load and merge each xts block
  ts.set = load.single.file(dates[i], filenames[i])
  if( i == 1 )
    ts.all = ts.set
  else
    ts.all = rbind(ts.all, ts.set)
}

return(ts.all)

する方法はありますか

  1. 最初の ts.set を初期化するために必要な if/else ステートメントを避けますか?
  2. for ループを完全に回避しますか?
4

1 に答える 1

3

私はこのような構成をよく使用します。これにより、明示的なループ構成が回避されます。

戦略は、最初にファイルを data.frames のリストに読み込み、次にrbindそのリストの要素を 1 つの data.frame にまとめることです。おそらく、同じロジックを状況に適応させることができます。

filenames <- c("a.csv", "b.csv", "c.csv")
l <- lapply(filenames, read.csv)
do.call("rbind", l)
于 2012-01-04T21:45:08.867 に答える