使用字符串更改数据框列的类

mat*_*lin 5 r

我有一个数据框,其中所有列都有character类,但许多列应该是数字或整数类.我还有一个包含每列所需类的字符向量,例如

classes <- c("integer", "integer", "numeric", "character", "logical", "numeric", ... )
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来使用此classes向量快速设置每列的类而不循环.

我希望有一种方法可以做到类似于命名,例如

names(df) <- names
Run Code Online (Sandbox Code Playgroud)

在哪里namescharacter矢量,或者在我的情况下

class(df) <- classes
Run Code Online (Sandbox Code Playgroud)

the*_*ail 9

用途Map:

df <- data.frame(V1=letters[1:3],
                 V2=c("1","2","3"),
                 V3=c("1.1","2.2","3.3"),stringsAsFactors=FALSE)

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

str(df)
#'data.frame':   3 obs. of  3 variables:
# $ V1: chr  "a" "b" "c"
# $ V2: chr  "1" "2" "3"
# $ V3: chr  "1.1" "2.2" "3.3"

df[] <- Map(`class<-`, df, classes)

str(df)
#'data.frame':   3 obs. of  3 variables:
# $ V1: chr  "a" "b" "c"
# $ V2: int  1 2 3
# $ V3: num  1.1 2.2 3.3
Run Code Online (Sandbox Code Playgroud)