I am trying to run some trading strategies in R. I have downloaded some stock prices and calculated returns. The new return dataset has a number of -inf, NaN, and NA values. I am reproducing a row of the dataset (log_ret). Its a zoo dataset.
library(zoo)
log_ret <- structure(
c(0.234,-0.012,-Inf,NaN,0.454,Inf), .Dim = c(1L, 6L),
.Dimnames = list(NULL, c("x", "y", "z", "s", "p", "t")),
index = structure(12784, class = "Date"),
class = "zoo"
)
x y z s p t
2005-01-01 0.234 -0.012 -Inf NaN 0.454 Inf
How can I replace these unwanted values with 0?
As per ?zoo
:
Subscripting by a zoo object whose data contains logical values is undefined.
So you need to wrap the subsetting in a which
call:
log_ret[which(!is.finite(log_ret))] <- 0
log_ret
x y z s p t
2005-01-01 0.234 -0.012 0 0 0.454 0