Am Donnerstag, den 16.04.2009, 15:14 -0400 schrieb Chuck Cleland: > On 4/16/2009 2:58 PM, Juergen Rose wrote: > > The second beginner question. I want to create a new dataframe, where > > each element of the original dataframe is translated to 1 if it was "+", > > to 0 if it was "-" to -1 otherwise. I could do with: > > > > Lines <- "a b c d > > + - + + > > + + + - > > + 1 - '+ ' > > - + + + > > + N - +" > > > > > > DF <- read.table(textConnection(Lines), header = TRUE) > > cnames <- colnames(DF) > > nrow <-length(rownames(DF)) > > > > nc <- length(cnames) > > NDF <- data.frame(matrix(c(rep(0,nc*nrow)),ncol=nc)) > > > > for (i in 1:length(cnames)) { > > NDF[,i] <- sapply(DF[,i],function(x) if (x=="+") {1} else {if (x=="-") > > {0} else {-1}} ) > > } > > colnames(NDF) <- cnames > > > > But this is shure one loop too much. Please give me the R way solution. > > library(car) > > DF[] <- lapply(DF, function(x){recode(x, "'+'=1; '-'=0; else=-1")})
Thanks Chuck, I like this solution. > > ______________________________________________ > > 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. > ______________________________________________ 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.