TTR runSD returns 所有 NA
TTR runSD returns all NA
我认为这来自 R/package 更新,但现在当我尝试计算其中包含 NA 的时间序列的 运行 标准差时,我得到的只是 NA(当前是 R 版本4.0.3 和 TTR_0.24.2)
如何获得:
TTR::runSD(x = c(NA, 1:10), n = 1, cumulative = TRUE)
排除/忽略 NA 而不是 returning:
[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
编辑
理想情况下 return 它在 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 元素的元素
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
我认为这来自 R/package 更新,但现在当我尝试计算其中包含 NA 的时间序列的 运行 标准差时,我得到的只是 NA(当前是 R 版本4.0.3 和 TTR_0.24.2)
如何获得:
TTR::runSD(x = c(NA, 1:10), n = 1, cumulative = TRUE)
排除/忽略 NA 而不是 returning:
[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
编辑 理想情况下 return 它在 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 元素的元素
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