R:将xts系列从多个文件加载到单个块中

时间:2012-01-04 21:38:57

标签: r xts rbind

我有以下R代码从多个文件加载xts时间序列并将它们合并到一个xts矩阵中:

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. 避免使用if / else语句初始化第一个ts.set?
  2. 完全避免使用for循环?

1 个答案:

答案 0 :(得分:3)

我经常使用这样的构造,这避免了显式的循环构造。

策略是首先将文件读入data.frames列表,然后将该列表的元素rbind一起放入单个data.frame中。你可以根据自己的情况调整相同的逻辑。

filenames <- c("a.csv", "b.csv", "c.csv")
l <- lapply(filenames, read.csv)
do.call("rbind", l)