G'day Kevin, On Sun, 15 Nov 2009 7:18:18 -0800 <rkevinbur...@charter.net> wrote:
> This is a very simple question but I couldn't form a site search > quesry that would return a reasonable result set. > > Say I have a vector: > > x <- c(0,2,3,4,5,-1,-2) > > I want to replace all of the values in 'x' with the log of x. > Naturally this runs into problems since some of the values are > negative or zero. So how can I replace all of the positive elements > of x with the log(x) and the rest with zero? If you do not mind a warning message: R> x <- c(0,2,3,4,5,-1,-2) R> x <- ifelse(x <= 0,0, log(x)) Warning message: In log(x) : NaNs produced R> x [1] 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379 0.0000000 0.0000000 If you do mind, then: R> x <- c(0,2,3,4,5,-1,-2) R> ind <- x>0 R> x[!ind] <- 0 R> x[ind] <- log(x[ind]) R> x [1] 0.0000000 0.6931472 1.0986123 1.3862944 1.6094379 0.0000000 0.0000000 HTH. Cheers, Berwin ========================== Full address ============================ Berwin A Turlach Tel.: +61 (8) 6488 3338 (secr) School of Maths and Stats (M019) +61 (8) 6488 3383 (self) The University of Western Australia FAX : +61 (8) 6488 1028 35 Stirling Highway Crawley WA 6009 e-mail: ber...@maths.uwa.edu.au Australia http://www.maths.uwa.edu.au/~berwin ______________________________________________ R-help@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.