Skip to content
Prev 145697 / 398500 Next

help with simple function

I'm trying to build on Jim's approach to change the parameters in the 
function, with new rules: 

1. if (x[i]==0) NA 
2. if (x[i]>0) log(x[i]/(number of consecutive zeros preceding it +1)) 

x<-c(1,0,1,0,0,1,0,0,0,1,0,0,0,0,1) 
# i.e. output desired = c(0, NA, -0.69, NA, NA, -1.098, NA, NA, NA, -1.38, 
NA, NA, NA, NA, -1.61) 
y <- rle(x) 
# attempting to modify Jim's function: 
result <- lapply(seq_along(y$lengths), function(.indx){ 
     if (y$values[.indx-1] == 0) 
     log(y$values[.indx]/seq(y$lengths[.indx-1]+1, by=-1, 
     length=y$lengths[.indx])) 
     else rep(log(y$values[.indx]), y$lengths[.indx]) 
}) 
# but I am clearly missing something! 

Does it not work because I haven't addressed what to do with the zeros and 
log(0)=-Inf? 
I've tried adding another "ifelse" but I still get the same result. 
Can someone find the error in my ways?   
Tyler
T.D.Rudolph wrote: