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

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

最佳答案

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

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

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

关于R:将 xts 系列从多个文件加载到单个 block 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8734438/

相关文章:

从数据框中删除所有值为 NA、NULL 或空的列

在 R 中重复多个 NULL

r - 在引用类中实例化引用类 - lock() 和不变性的问题

r - 在 R 上安装 xts 包时出错

r - 线性回归线无法在 r 中的时间序列图上显示

r - 在 R 中,根据元素名称重组列表(rbind 和指示变量)

r - 将值向量附加到 R 中的键值列表

r - 将 POSIXct 对象强制转换为 Date 对象

r - 使 rbind 循环更快

r - 如何按R中的行随机组合不同的数据帧