【问题标题】:R - Save Full Data SetsR - 保存完整的数据集
【发布时间】:2012-01-19 00:40:17
【问题描述】:

例如当我在 R 中使用循环时

for (k in 1:length(bcd)) {
  print(window(abc,start = (as.Date(start[i,]),end = (as.Date(finish[i,]))))
}

结果将是完整的选定数据。

但是,如果我想保存选定的数据,它只会记住与最后一个循环计数器对应的数据。

for (k in 1:length(bcd)) {
  A = ???(window(abc,start = (as.Date(start[i,]),end = (as.Date(finish[i,]))))
}

在“???”中正确使用的函数是什么? ?谢谢。

【问题讨论】:

    标签: r for-loop zoo


    【解决方案1】:

    列表是最通用的类​​型。例如,您可以初始化“A”:

    A <-list()
    for (k in 1:length(bcd)) {
      A[[k]] <- window(abc, start = (as.Date(start[i,]), end = (as.Date(finish[i,]))))
    }
    

    专业人士使用seq_along() 而不是1:length(.)

    如果它们的列数相同但行数不同,那么这可能有效:

    do.call(rbind, A)   # since "A" is a list and the natural second argument to do.call
    

    【讨论】:

    • 对不起,它不起作用,消息说“要替换的项目数不是替换长度的倍数”。
    • [k] 更改为[[k]],因为这是一个列表。
    • 但是结果是单独的数据集,我怎样才能将它们合并成一个集合?
    • 我将修复“[[”错误。实际上,这些不是“单独的数据集”。结果将全部位于名为“A”的同一列表中。如果你想要一个像数据框这样的常规对象,你需要向我们保证窗口中的项目数量都是相同的。然后我们可以简化它。但在我们知道你的数据是什么之前,我只会提供一个通用的解决方案。
    • 你的意思是“如果你想要一个像数据框这样的常规对象,你需要向我们保证窗口中的项目数量都是一样的”。是包含在“A”或其他内容中的总数据。我附上了有两列的数据摘要。这意味着第一个子集有6行。摘要(el_nino_1974_2000_all)长度类模式[1,]12动物园数字[2, ] 28 动物园数字 [3,] 34 动物园数字 [4,] 30 动物园数字 [5,] 12 动物园数字 [6,] 14 动物园数字 [7,] 28 动物园数字
    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2021-07-27
    • 2017-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多