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

发布于 2024-12-25 02:12:13 字数 422 浏览 0 评论 0原文

我有以下 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 循环吗?

I have the following R code to load xts timeseries from multiple files and merge them in a single xts matrix:

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)

Is there a way to

  1. Avoid the if/else statement required to initialize the very first ts.set?
  2. Avoid the for loop altogether?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

a√萤火虫的光℡ 2025-01-01 02:12:13

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

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

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

I often use a construct like this, which avoids explicit loop construction.

The strategy is to first read the files into a list of data.frames, and to then rbind together the elements of that list into a single data.frame. You can presumably adapt the same logic to your situation.

filenames <- c("a.csv", "b.csv", "c.csv")
l <- lapply(filenames, read.csv)
do.call("rbind", l)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文