Use tolower on the levels of the factor columns. E.g., > d <- data.frame(Num=1:3, F1=c("One","Two","Three"), F2=c("A","B","a")) > str(d) 'data.frame': 3 obs. of 3 variables: $ Num: int 1 2 3 $ F1 : Factor w/ 3 levels "One","Three",..: 1 3 2 $ F2 : Factor w/ 3 levels "a","A","B": 2 3 1 > for(n in names(d)) + if (is.factor(d[[n]])) levels(d[[n]]) <- tolower(levels(d[[n]])) > str(d) 'data.frame': 3 obs. of 3 variables: $ Num: int 1 2 3 $ F1 : Factor w/ 3 levels "one","three",..: 1 3 2 $ F2 : Factor w/ 2 levels "a","b": 1 2 1
Using data.frame(tolower(as.matrix(d))) may change your column names and the data in your columns - don't do it. Bill Dunlap TIBCO Software wdunlap tibco.com On Mon, Oct 31, 2016 at 7:44 AM, Yahya Laraki <larakiya...@gmail.com> wrote: > Hi everybody, > > I’m new to R and i’m trying to learn fundamentals. I’m facing a small > problem for which i can’t find a solution online. > > What i want to do: write a function to lower case for all the columns in > my data.frame if they respect a condition (class = factor) > > This code works, but for all my columns : change_lower = function(x) > {data.frame(tolower(as.matrix(x)))} > > I need more something like this, but it doesn’t work: function (x) { for > (i in 1:length(x)) { > if (class(i)=="factor") { > data.frame(tolower(as.matrix(x))) > } > }} > > Thank you > > Yahya > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.