Технически, read.table
делает именно это с помощью type.convert
. Таким образом, вы можете использовать это - это не самый эффективный способ, но, вероятно, самый простой:
df <- as.data.frame(lapply(df ,function(x) type.convert(as.character(x))))
На практике может быть лучше сделать это выборочно, поэтому вы касаетесь только символов / факторов:
for (i in seq.int(df)) if (is.factor(df[[i]]) || is.character(df[[i]]))
df[[i]] <- type.convert(as.character(df[[i]]))