Функция для преобразования типа столбца dataframe

R часто понимает столбцы фрейма данных как «неправильный». формат или вам просто нужно изменить класс столбца с фактора на символ, чтобы изменить его. Ранее я изменял класс столбца следующим образом:

set.seed(1)

df <- data.frame(x = 1:10,
y = rep(1:2, 5),
k = rnorm(10, 5,2),
z = rep(c(2010, 2012, 2011, 2010, 1999), 2),
j = c(rep(c("a", "b", "c"), 3), "d"))

x <- c("y", "z")

for(i in 1:length(x)){
df[,x[i]] <- factor(df[,x[i]])}

И вернемся к числовому:

x <- 1:5

for(i in 1:length(x)){
df[,x[i]] <- as.numeric(as.character(df[,x[i]]))} # Character cannot become numeric

Мне пришло в голову, что, возможно, есть лучший способ сделать это. я нашелэтот вопрос, что почти точно, что мне нужно:

convert.magic <- function(obj,types){
out <- lapply(1:length(obj),FUN = function(i){FUN1 <- 
switch(types[i],
character = as.character,
numeric = as.numeric,
factor = as.factor); FUN1(obj[,i])})
names(out) <- colnames(obj)
as.data.frame(out)
}

Однако для этой функции тип вектора должен быть указан для каждого столбца:

convert.magic(df, rep("factor",5))

convert.magic(df, c("character", "factor"))
# Error in FUN(1:5[[1L]], ...) : could not find function "FUN1"

Может ли кто-нибудь помочь мне и перестроить эту функцию, чтобы она работала с именами и номерами столбцов, пожалуйста? Я боюсь, что это было бы слишком для меня ...

x <- c("y", "z")
convert.magic(df, "character", x)

Ответы на вопрос(1)

Ваш ответ на вопрос