Я думаю, что это произошло из-за обновления R/package, но теперь, когда я пытаюсь рассчитать текущее стандартное отклонение временного ряда с 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.omit
изменит размер ввода/вывода
очень хорошая работа вокруг, спасибо! подождет некоторое время, прежде чем принять. протягивая, чтобы увидеть, есть ли функциональное решение
Вариант состоит в том, чтобы создать функцию и обновить только те элементы, у которых есть элементы, отличные от 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
У него нет
na.rm
. Вы можете использовать `TTR::runSD(x = na.omit(c(NA, 1:10)), n = 1, cumulative = TRUE)`