在 R 中,将列 类 映射到没有 for 循环的字符向量

In R, mapping column classes to a character vector without a for loop

假设我有一个包含 X 列的数据框,以及一个包含 类 的长度为 X 的字符向量,如下所示:

classes <- c("character","numeric","numeric","character","character")

如何在不使用 for 循环的情况下 "map" 那些 类 到我的数据框的列?

有一个函数叫做 Map。 ;)

DF <- iris
classes <- c("character","numeric","numeric","character","character")
DF[] <- Map(as, DF, classes)
sapply(DF, class)
#Sepal.Length  Sepal.Width Petal.Length  Petal.Width      Species 
# "character"    "numeric"    "numeric"  "character"  "character" 

当然,这仍然是一个循环,不会比 for 循环更有效。不过语法更清晰。