我有一个数据框,其中所有列都有character
类,但许多列应该是数字或整数类。我还有一个包含每列所需类的字符向量,例如
classes <- c("integer", "integer", "numeric", "character", "logical", "numeric", ... )
我正在寻找一种使用此classes
向量快速设置每列的类而无需循环的方法。
我希望有一种方法可以做到类似于命名,例如
names(df) <- names
其中names
是character
向量,或者在我的情况下
class(df) <- classes
答案 0 :(得分: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