Это может быть сделано в одной строке, нет необходимости в цикле, будь то цикл или применение.Вместо этого используйте unlist ():
# testdata
Df <- data.frame(
x = as.factor(sample(1:5,30,r=TRUE)),
y = as.factor(sample(1:5,30,r=TRUE)),
z = as.factor(sample(1:5,30,r=TRUE)),
w = as.factor(sample(1:5,30,r=TRUE))
)
##
Df[,c("y","w")] <- as.numeric(as.character(unlist(Df[,c("y","w")])))
str(Df)
Edit: для вашего кода это становится:
id <- c(1,3:ncol(stats)))
stats[,id] <- as.numeric(as.character(unlist(stats[,id])))
Очевидно, если у вас есть фрейм данных из одного столбца, и вы не хотитеавтоматическое уменьшение размера R для преобразования его в вектор, вам нужно будет добавить аргумент drop=FALSE
.