The best way to do this is avoid base *apply
functions, which coerces the entire data frame to an array, possibly losing information.
If you wanted to apply a function as.numeric
to every column, a simple way is using mutate_all
from dplyr:
t %>% mutate_all(as.numeric)
Alternatively use colwise
from plyr, which will "turn a function that operates on a vector into a function that operates column-wise on a data.frame."
t %>% (colwise(as.numeric))
In the special case of reading in a data table of character vectors and coercing columns into the correct data type, use type.convert
or type_convert
from readr.
Less interesting answer: we can apply on each column with a for-loop:
for (i in 1:nrow(t)) { t[, i] <- parse_guess(t[, i]) }
I don't know of a good way of doing assignment with *apply while preserving data frame structure.