将 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)
})