Я хочу использовать diff(log(myvar))
для вычисления некоторых результатов журнала временных рядов.Некоторые из значений в myvar
установлены на 0
, и diff()
возвращает Inf
в этом случае, как и должно быть математически.
Как заставить diff()
сделать исключение и вернуть0
когда любая точка данных отлаженной пары равна 0
?Например,
diff(log(c(0,1,2,3,4)))
Возвращает
0 0.6931472 0.4054651 0.2876821
Обязательное значение для первого вычисленного значения будет 0
, а не Inf
.
ОБНОВЛЕНИЕ У меня действительно была проблема с использованием is.infinite ().Рассмотрим следующий случай:
> v = diff(log(c(1, 0, 0, 2, 3)))
> v
[1] -Inf NaN Inf 0.4054651
> is.infinite(v)
[1] TRUE FALSE TRUE FALSE
Здесь у нас есть 3 разных случая: -Inf, Inf и NaN.Цель установлена в 0 для всех возвратов, базовая цитата которых равна 0, поэтому мне пришлось добавить v[is.nan(v)] = 0
.
Почему я хотел бы установить возврат в 0, а не в NA?Что ж, это скорее логическая проблема, нежели вопрос программирования, но идея в том, что в моем случае 0 означает, что справочная цена не изменилась (а не то, что она неизвестна).