【问题标题】:How do I generate a variable number of variables?如何生成可变数量的变量?
【发布时间】:2017-07-12 10:23:29
【问题描述】:

我正在使用具有内部循环的循环。在每个内部循环中,都会创建 x 个时间序列 (ts1, ts2, ts3,... tsx),然后我需要使用 cbind (data.f=cbind(ts1, ts2, ts3,... tsx) 绑定它们)) 为了绘制 data.f 并查看在同一图中创建的所有时间序列。 问题是在每个周期中创建的时间序列的数量(x)都会改变,所以命令:

data.f=cbind(ts1, ts2, ts3,... tsx)

每次都会有不同数量的术语“tsi”。当我不知道每次的数量时,如何在我的一般循环中定义这个包含内部循环中创建的所有 tsx 的命令?

【问题讨论】:

  • 最好使用列表而不是一堆对象。如果对象的数量来自循环,则必须将循环替换为 lapply()sapply()replicate()(或类似的东西)

标签: r loops variables


【解决方案1】:

尝试do.callcbind 如下

total <- abs(round(rnorm(1) * 20))
ts_final <- do.call(cbind,lapply(1:total,function(x){
   as.xts(1:10,Sys.Date()-1:10)
}))

【讨论】:

    【解决方案2】:

    每当您发现自己在变量名称中附加了数字时,您都需要停下来重新思考您的代码:您应该改用向量或列表。

    在您的特定情况下,创建一个时间序列列表而不是单个变量,并使用dplyr::bind_cols(time_series)do.call(cbind, time_series) 将它们整理到一个表中。

    【讨论】:

    • 感谢@Konrad Rudolph!固定!
    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 2013-03-31
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多