Monday, 15 April 2013

r - How levels(factorObject)[factorObject] generate complete vector? -



r - How levels(factorObject)[factorObject] generate complete vector? -

vectorn = c("hello","how","are","you","you","are","hello") factorvectorn = factor(vectorn) #value of levels(factorvectorn) c("are", "hello", "how", "you") all(levels(factorvectorn)[factorvectorn] == vectorn) # returns true

can please explain, how in above illustration levels(factorvectorn)[factorvectorn] create same vector vectorn?

this basic subsetting. help("["):

indexing factors allowed , equivalent indexing numeric codes (see factor) , not character values printed

you show factor levels. internally, factor integer vector, each number (starting 1) corresponds factor level:

str(factorvectorn) #factor w/ 4 levels "are","hello",..: 2 3 1 4 4 1 2 as.integer(factorvectorn) #[1] 2 3 1 4 4 1 2

so, if subset levels these numbers, character vector same values original factor:

str(levels(factorvectorn)[factorvectorn]) #chr [1:7] "hello" "how" "are" "you" "you" "are" "hello"

if compare original factor character vector using == factor coerced character this, too.

r

No comments:

Post a Comment