Вы знаете, как вы можете предоставить вектор имен для фрейма данных, чтобы изменить имена столбцов или строк в кадре данных. Есть ли аналогичный метод для подачи вектора имен, который изменяет класс каждого столбца в фрейме данных? Это можно сделать, когда вы читаете в dataframe с помощью read.table с помощью colClasses. Как насчет того, создается ли фреймворк внутри R?
DF <- as.data.frame(matrix(rnorm(25), 5, 5))
str(DF) #all numeric modes
names(DF) <- c("A", "A2", "B", "B2", "Z") #I want something like this for classes
some_classes_function_like_names(DF) <- c(rep("character", 3), rep("factor", 2))
#I can do it like this but this seems inefficient
DF[, 1:3] <- lapply(DF[, 1:3], as.character)
DF[, 4:5] <- lapply(DF[, 4:5], as.factor)
str(DF)
РЕДАКТИРОВАТЬ: Я поменял sapply выше на lapply, поскольку sapply не имеет смысла.
EDIT 2: Если есть способ написать определенную пользователем функцию, которая также будет достаточной