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