From: T.D.Rudolph <prairie.picker_at_gmail.com>

Date: Thu, 29 May 2008 16:46:23 -0700 (PDT)

#...I am clearly missing something!*> log(y$values[.indx+1]/seq(y$lengths[.indx]+1, by=-1,
*

*> length=y$lengths[.indx]))
*

*> + else rep(log(y$values[.indx]), y$lengths[.indx])
*

*> + })
*

> [1] -0.6931472 0.0000000 -1.0986123 -0.6931472 0.0000000 -1.3862944

*> -1.0986123 -0.6931472 0.0000000
*

*> [10] -1.6094379 -1.3862944 -1.0986123 -0.6931472 0.0000000
*

*>
*

*>
*

> On Tue, May 27, 2008 at 8:04 PM, T.D.Rudolph <prairie.picker@gmail.com>

*> wrote:
*

*>
*

*>
*

*>
*

*>
*

*> --
*

> Jim Holtman

*> Cincinnati, OH
*

*> +1 513 646 9390
*

*>
*

*> What is the problem you are trying to solve?
*

*>
*

*> [[alternative HTML version deleted]]
*

*>
*

*> ______________________________________________
*

*> R-help_at_r-project.org mailing list
*

*> https://stat.ethz.ch/mailman/listinfo/r-help
*

*> PLEASE do read the posting guide
*

*> http://www.R-project.org/posting-guide.html
*

*> and provide commented, minimal, self-contained, reproducible code.
*

*>
*

*>
*

Date: Thu, 29 May 2008 16:46:23 -0700 (PDT)

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

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

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)

# attempting to modify Jim's function...:
y <- rle(x)

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])})

#...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

jholtman wrote:

*>
*

> Does this do what you want:

*>
*

>> x<-c(0,1,0,0,1,0,0,0,1,0,0,0,0,1) >> y <- rle(x) >> result <- lapply(seq_along(y$lengths), function(.indx){

> + if (y$values[.indx] == 0)

>> unlist(result)

> [1] -0.6931472 0.0000000 -1.0986123 -0.6931472 0.0000000 -1.3862944

>> >>

> On Tue, May 27, 2008 at 8:04 PM, T.D.Rudolph <prairie.picker@gmail.com>

>> >> In fact x[4,2] should = log(x[5,1]/2] >> whereas x[3,2] = log(x[5,1/3]) >> >> i.e. The denominator in the log function equals the number of rows >> between >> m==0 and m>0 (inclusive, hence the "+1") >> >> Hope this helps!... >> >> >> Charles C. Berry wrote: >> > >> > On Tue, 27 May 2008, T.D.Rudolph wrote: >> > >> >> >> >> >> >> I have a matrix of frequency counts from 0-160. >> >> x<-as.matrix(c(0,1,0,0,1,0,0,0,1,0,0,0,0,1)) >> >> >> >> I would like to apply a function creating a new column >> (x[,2])containing >> >> values equal to: >> >> a) log(x[m,1]) if x[m,1] > 0; and >> >> b) for all x[m,1]= 0, log(next x[m,1] > 0 / count of preceding zero >> >> values >> >> +1) >> >> >> >> for example, x[1,2] should equal log(x[2,1]/2) = log(1/2) = -0.6931472 >> >> whereas x[3,2] should equal log(x[5,1]/3) = log (1/3) = -1.098612 >> >> >> > >> > If you also intend that x[4,2] == x[3,2] in your example, then this >> seems >> > what you want: >> > >> >> rle.x <- rle(x[,1]) >> >> num <- ifelse(rle.x$values == 0, c(tail(rle.x$values,-1),NA), >> >> rle.x$values ) >> >> denom <- ifelse(rle.x$values == 0 , rle.x$lengths +1 , 1 ) >> >> rep(log(num/denom),rle.x$lengths) >> > [1] -0.6931472 0.0000000 -1.0986123 -1.0986123 0.0000000 -1.3862944 >> > -1.3862944 -1.3862944 0.0000000 -1.6094379 >> > [11] -1.6094379 -1.6094379 -1.6094379 0.0000000 >> >> >> > >> > See >> > >> > ?rep >> > ?rle >> > ?tail >> > >> > HTH, >> > >> > Chuck >> > >> > >> >> I will be applying this to nrow(x)=~70,000 so I would prefer to not do >> it >> >> by >> >> hand! >> >> Tyler >> >> >> >> >> >> >> >> -- >> >> View this message in context: >> >> >> http://www.nabble.com/help-with-simple-function-tp17498394p17498394.html >> >> Sent from the R help mailing list archive at Nabble.com. >> >> >> >> ______________________________________________ >> >> R-help_at_r-project.org mailing list >> >> https://stat.ethz.ch/mailman/listinfo/r-help >> >> PLEASE do read the posting guide >> >> >> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html> >> >> and provide commented, minimal, self-contained, reproducible code. >> >> >> > >> > Charles C. Berry (858) 534-2098 >> > Dept of Family/Preventive >> > Medicine >> > E mailto:cberry_at_tajo.ucsd.edu UC San Diego >> > http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego >> 92093-0901 >> > >> > ______________________________________________ >> > R-help_at_r-project.org mailing list >> > https://stat.ethz.ch/mailman/listinfo/r-help >> > PLEASE do read the posting guide >> > >> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html> >> > and provide commented, minimal, self-contained, reproducible code. >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/help-with-simple-function-tp17498394p17502735.html >> Sent from the R help mailing list archive at Nabble.com. >> >> ______________________________________________ >> R-help_at_r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html> >> and provide commented, minimal, self-contained, reproducible code. >>

> Jim Holtman

-- View this message in context: http://www.nabble.com/help-with-simple-function-tp17498394p17548555.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help_at_r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.Received on Fri 30 May 2008 - 00:02:26 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Fri 30 May 2008 - 00:30:42 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*