【问题标题】:TTR runSD returns all NATTR runSD 返回所有 NA
【发布时间】:2021-04-02 11:44:40
【问题描述】:

我认为这来自 R/包更新,但现在当我尝试计算其中包含 NA 的时间序列的运行标准偏差时,我得到的只是 NA(当前是 R 版本 4.0.3 和 TTR_0.24.2 )

如何获得:

TTR::runSD(x = c(NA, 1:10), n = 1, cumulative = TRUE)

排除/忽略 NA 而不是返回:

 [1] NA NA NA NA NA NA NA NA NA NA NA

类似于:

 [1] NA NaN 0.7071068 1.0000000 1.2909944 1.5811388 1.8708287 2.1602469 2.4494897 2.7386128 3.0276504

编辑 理想情况下返回它在 R 版本 3.5.2 和 TTR_0.23-4 下所做的:

> TTR::runSD(x = c(NA, 1:10), n = 1, cumulative = TRUE)
 [1]       NA       NA 1.000000 1.172604 1.414214 1.677051 1.949359 2.226732 2.507133 2.789489 3.073181

【问题讨论】:

  • 它没有na.rm。您可以使用 `TTR::runSD(x = na.omit(c(NA, 1:10)), n = 1,累积 = TRUE)`
  • hmm 这并不理想,因为na.omit 会改变输入/输出的大小
  • 非常好的解决方法,谢谢!在接受之前将等待一段时间。坚持看看是否有有效的解决方案

标签: r ttr


【解决方案1】:

一种选择是创建一个函数并仅更新那些具有非 NA 元素的元素

f1 <- function(vec) {
      i1 <- !is.na(vec)
      vec[i1] <- TTR::runSD(x = vec[i1], n = 1, cumulative = TRUE)
      vec
  }

f1(c(NA, 1:10))
#[1]        NA       NaN 0.7071068 1.0000000 1.2909944 1.5811388 1.8708287 2.1602469 2.4494897 2.7386128 3.0276504

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2018-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多