【问题标题】:Concatenating zoo objects without a for loop在没有 for 循环的情况下连接 zoo 对象
【发布时间】:2011-12-12 06:55:52
【问题描述】:

我有一个函数获取一个日期并返回一个包含日内时间序列的动物园对象。这是一个模型:

    getData<-function(valuationDate) 
        zoo(
            rnorm(10), 
            seq(as.POSIXlt(paste(valuationDate,"09:00")),length.out=10,by="hour")
        )

我想将此函数应用于日期列表

    valuationDates<-seq(Sys.Date(),Sys.Date()+10,by="day")

并连接生成的动物园对象。如果lzply存在,它看起来像这样

    z <- lzply(valuationDates,getData)

我找到的唯一解决方案是从一个空的 zoo 对象开始,并在 for 循环中连接 zoo 对象。但它非常丑陋。肯定有更好的办法。你会怎么做呢?

【问题讨论】:

  • 类似z &lt;- sapply(valuationDates, getData, simplify = FALSE);do.call("rbind", z)?
  • 感谢 do.call 是我所缺少的。请写下答案,以便我们结束问题。

标签: r plyr zoo


【解决方案1】:

你想要做的是创建一个-whatever-的列表。之后,您可以使用 rbind、cbind、c 以及您自己的函数……随便命名它。在你的情况下,那将是

z <- sapply(valuationDates, getData, simplify = FALSE)
do.call("rbind", z)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-26
    • 2013-06-08
    • 2012-05-23
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多