Hi, May be this helps: set.seed(49) dat1 <- as.data.frame(matrix(sample(c(NA,0:2),20,replace=TRUE),ncol=2)) dat2 <- dat1 lst1 <- list(letters[1:3],letters[26:24]) library(plyr)
dat1[] <-lapply(seq_len(ncol(dat1)),function(i) {x1 <-dat1[,i]; x2 <- lst1[[i]]; mapvalues(x1,c(0,1,2),x2)}) #Or dat2[] <-lapply(seq_len(ncol(dat2)),function(i) as.character(factor(dat2[,i],labels=lst1[[i]]))) identical(dat1,dat2) #[1] TRUE A.K. Hi I'm Pasquale, I need to recode variables (columns) of a dataframe (call it X). The observations (rows) are coded as numeric 0,1,2 and NA. I managed to use the lapply() function with recode() as FUN and for() loop but I failed. My problem is that for each columns the recoding system is different (i.e. for V1 the code will be 0=a, 1=b, 2=c, for V2 0=z, 1=y, 2=x). My new codes are stored in another data frame (call it Y). colnames(X) and rownames(Y) matches. How can I solve this situation? Thanks a lot in advance, Pasquale ______________________________________________ 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.