I have a data frame like this:df = data.frame(a=1:3, b=2:4, c=3:5)
I am selecting columns from that data frame using something akin to:df[, c(T, F, T)]
This works fine as long as there are at least two columns to be returned; but, if I do this for example:df[, c(T, F, F)]
... I suddenly only get a vector instead of a data.frame.
Normally this would be fine (or even desired), but since I need the result to be a data.frame at a later point, this completely messes up my scripts.
Is there a way I can prevent R from doing this automatic conversion to a vector for single-column selections?
To convert all columns of the data frame into the character we use apply() function with as. character parameter.
If we want to turn a dataframe row into a character vector then we can use as. character() method In R, we can construct a character vector by enclosing the vector values in double quotation marks, but if we want to create a character vector from data frame row values, we can use the as character function.
To convert factor levels into character then we can use as. character function by accessing the column of the data frame that contain factor values. For example, if we have a data frame df which contains a factor column named as Gender then this column can be converted into character column as as. character(df$Gender).
This one is pretty simple. Append , drop = FALSE
to your subsetting.
E.g.
df[, c(T, F, F), drop = FALSE]
Also works for matrices.
Also without the comma, i.e. df[c(T,F,F)], returns a dataframe but it sounds like you have cases where the new dataframe can have one or more columns. So use the drop option abovee
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With