(This article was first published on

**Yet Another Blog in Statistical Computing » S+/R**, and kindly contributed to R-bloggers)data(iris) str(iris) # OUTPUT: # 'data.frame': 150 obs. of 5 variables: # $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... # $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ... # $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ... # $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ... # $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ... ### CONVERT THE FACTOR TO DUMMIES ### library(caret) dummies <- predict(dummyVars(~ Species, data = iris), newdata = iris) head(dummies, n = 3) # OUTPUT: # Species.setosa Species.versicolor Species.virginica # 1 1 0 0 # 2 1 0 0 # 3 1 0 0 ### CONVERT DUMMIES TO THE FACTOR ### header <- unlist(strsplit(colnames(dummies), '[.]'))[2 * (1:ncol(dummies))] species <- factor(dummies %*% 1:ncol(dummies), labels = header) str(species) # OUTPUT: # Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ... ### COMPARE THE ORIGINAL AND THE CALCULATED FACTORS ### library(compare) all.equal(species, iris$Species) # OUTPUT: # [1] TRUE

To

**leave a comment**for the author, please follow the link and comment on their blog:**Yet Another Blog in Statistical Computing » S+/R**.R-bloggers.com offers

**daily e-mail updates**about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...