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

示例

常见的任务是将a的所有列转换data.frame为字符类,以便于操作,例如在发送data.frames到RDBMS或合并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)
})