将 data.frame 的所有列转换为字符类

一个常见的任务是将 data.frame 的所有列转换为字符类以便于操作,例如在将 data.frames 发送到 RDBMS 或合并 data.frames 的情况下,其中包含输入 data.frames 之间级别可能不同的因素。。

这样做的最佳时间是读入数据时 - 几乎所有创建数据帧的输入方法都有一个 stringsAsFactors 选项,可以设置为 FALSE

如果已创建数据,则可以将因子列转换为字符列,如下所示。

bob <- data.frame(jobs = c("scientist", "analyst"), 
                  pay  = c(160000, 100000), age = c(30, 25))
str(bob)
'data.frame':    2 obs. of  3 variables:
 $ jobs: Factor w/ 2 levels "analyst","scientist": 2 1
 $ pay : num  160000 100000
 $ age : num  30 25
# Convert *all columns* to character
bob[] <- lapply(bob, as.character)
str(bob)
    'data.frame':    2 obs. of  3 variables:
 $ jobs: chr  "scientist" "analyst"
 $ pay : chr  "160000" "1e+05"
 $ age : chr  "30" "25"
# Convert only factor columns to character
bob[] <- lapply(bob, function(x) {
    if is.factor(x) x <- as.character(x)
    return(x)
})