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

标签 r

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

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

我正在寻找一种使用此 classes 快速设置每列的类的方法没有循环的向量。

我希望有一种类似于命名的方法,例如
names(df) <- names

哪里namescharacter矢量,或者在我的情况下
class(df) <- classes

最佳答案

使用 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

关于r - 使用字符串更改数据框列的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27435873/

相关文章:

r - dplyr:组中的最大值,不包括每行中的值?

r - 从集群信息中查找网络链接

c++ - 如何将矩阵列表从 Rcpp 返回到 R?

css - 使用 renderPlot() 删除 R Shiny ggplot 中 geom_sf() 对象周围的白边

r - 基于一行 R 改变一组中多行的变量

r - 在一行中搜索 r 中的一系列值

重复代码以在数据框中添加空白行

r - geom_text 没有标记闪避的 geom_bar

r - 处理 geom_text 大小

r - R 或 PostgreSQL 中的最小变异性检查