Hi Luigi, Okay, so you mean: I want to change all factors in a dataframe to character class, _not_ remove them.
factor2character<-function(x) if(is.factor(x)) return(as.character(x)) else return(x) df1<-lapply(df,factor2character) Jim On Sun, Sep 19, 2021 at 8:03 PM Luigi Marongiu <marongiu.lu...@gmail.com> wrote: > > Thank you Jim, but I obtain: > ``` > > str(df) > 'data.frame': 5 obs. of 3 variables: > $ region : Factor w/ 5 levels "A","B","C","D",..: 1 2 3 4 5 > $ sales : num 13 16 22 27 34 > $ country: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5 > > df1<-df[,!unlist(lapply(df,is.factor))] > > str(df1) > num [1:5] 13 16 22 27 34 > > df1 > [1] 13 16 22 27 34 > ``` > I was expecting > ``` > str(df) > 'data.frame': 5 obs. of 3 variables: > $ region : char "A","B","C","D",..: 1 2 3 4 5 > $ sales : num 13 16 22 27 34 > $ country: char "a","b","c","d",..: 1 2 3 4 5 > ``` > > On Sun, Sep 19, 2021 at 11:37 AM Jim Lemon <drjimle...@gmail.com> wrote: > > > > Hi Luigi, > > It's easy: > > > > df1<-df[,!unlist(lapply(df,is.factor))] > > > > _except_ when there is only one column left, as in your example. In > > that case, you will have to coerce the resulting vector back into a > > one column data frame. > > > > Jim > > > > On Sun, Sep 19, 2021 at 6:18 PM Luigi Marongiu <marongiu.lu...@gmail.com> > > wrote: > > > > > > Hello, > > > I woul dlike to remove factors from all the columns of a dataframe. > > > I can do it n a column at the time with > > > ``` > > > > > > df <- data.frame(region=factor(c('A', 'B', 'C', 'D', 'E')), > > > sales = c(13, 16, 22, 27, 34), country=factor(c('a', > > > 'b', 'c', 'd', 'e'))) > > > > > > new_df$region <- droplevels(new_df$region) > > > ``` > > > > > > What is the syntax to remove all factors at once (from all columns)? > > > For this does not work: > > > ``` > > > > str(df) > > > 'data.frame': 5 obs. of 3 variables: > > > $ region : Factor w/ 5 levels "A","B","C","D",..: 1 2 3 4 5 > > > $ sales : num 13 16 22 27 34 > > > $ country: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5 > > > > df = droplevels(df) > > > > str(df) > > > 'data.frame': 5 obs. of 3 variables: > > > $ region : Factor w/ 5 levels "A","B","C","D",..: 1 2 3 4 5 > > > $ sales : num 13 16 22 27 34 > > > $ country: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5 > > > ``` > > > Thank you > > > > > > ______________________________________________ > > > 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. > > > > -- > Best regards, > Luigi ______________________________________________ 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.