[R] converting the string columns in a data.frame to factors?

Erik Iverson eriki at ccbr.umn.edu
Mon Feb 28 18:25:27 CET 2011


John,

as.data.frame is a generic function that will call different methods
depending on what class of object you pass to it.  The different
methods may have different arguments that they expect or honor.

The stringsAsFactors parameter is only used in certain methods of
as.data.frame.  When you pass an actual data.frame to that function,
stringsAsFactors is not used.  It looks like it is only used for
methods for character and matrix objects.

So, to do what you want:

aframe1 <- data.frame(x = LETTERS[1:10],
                       y = LETTERS[1:10],
                       z = 1:10,
                       stringsAsFactors = FALSE)

ind <- sapply(aframe1, is.character)
aframe1[ind] <- lapply(aframe1[ind], factor)

John Edwards wrote:
> Dear All,
> 
> I'm not sure if I understand the parameter stringsAsFactors correctly. I'm
> trying to convert the string columns in aframe1 to factors. But it
> seems stringsAsFactors=T in as.data.frame() doesn't do anything. Could
> anybody let know what is the correct way to converting strings to factors?
> 
>> aframe1=data.frame(x=LETTERS[1:10], y=LETTERS[1:10], stringsAsFactors=F)
>> aframe2=as.data.frame(aframe1, stringsAsFactors=T)
>>
>> str(aframe1)
> 'data.frame': 10 obs. of  2 variables:
>  $ x: chr  "A" "B" "C" "D" ...
>  $ y: chr  "A" "B" "C" "D" ...
>> str(aframe2)
> 'data.frame': 10 obs. of  2 variables:
>  $ x: chr  "A" "B" "C" "D" ...
>  $ y: chr  "A" "B" "C" "D" ...
> 
> Thanks,
> John
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list