0

I came across a problem in my DataCamp exercise that basically asked "Remove the column names in this vector that are not factors." I know what they -wanted- me to do, and that was to simply do glimpse(df) and manually delete elements of the vector containing the column names, but that wasn't satisfying for me. I figured there was a simple way to store the column names of the dataframe that are factors into a vector. So, I tried two things that ended up working, but I worry they might be inefficient. Example data Frame:

factorVar <- as.factor(LETTERS[1:10])
df1 <- data.frame(x = 1, y = 1:10, factorVar = sample(factorVar, 10))

My first solution was this:

vector1 <- names(select_if(df1, is.factor))

This worked, but select_if returns an entire tibble of a filtered dataframe and then gets the column names. Surely there's an easier way... Next, I tried this:

vector2 <- colnames(df1)[sapply(df1,is.factor)]

This also worked, but I wanted to know if there's a quicker, more efficient way of filtering column names based on their type and then storing the results as a vector.

0 Answers0