Search code examples
rstringcharacterdouble-quotes

Saving character columns with double quotes ("")


I want to save string columns containing spaces or blanks with double quotes.

df <-
  structure(list(type = c("menu", "item", "item", "item", "item", 
    "item"), menu.item = c("fileMenu", "fileMenu", "fileMenu", "fileMenu", 
    "fileMenu", "fileMenu"), operation.parent = c("topMenu", "command", 
    "separator", "command", "command", "command"), label = c("", 
    "Change working directory...", "", "Open script file...", "Save script...", 
    "Save script as..."), command.menu = c("", "Setwd", "", "loadLog", 
    "saveLog", "saveLogAs"), activation = c("", "", "", "", "", ""
    ), install. = c("", "", "", "", "", "")), .Names = c("type", 
    "menu.item", "operation.parent", "label", "command.menu", "activation", 
    "install."), row.names = c(NA, 6L), class = "data.frame"
    )

df
type menu.item operation.parent                       label command.menu

1 menu  fileMenu          topMenu                                         
2 item  fileMenu          command Change working directory...        Setwd
3 item  fileMenu        separator                                         
4 item  fileMenu          command         Open script file...      loadLog
5 item  fileMenu          command              Save script...      saveLog
6 item  fileMenu          command           Save script as...    saveLogAs
  activation install.
1                    
2                    
3                    
4                    
5                    
6      
df$label
[1] ""                            "Change working directory..."
[3] ""                            "Open script file..."        
[5] "Save script..."              "Save script as..."      

Solution

  • If you have this:

    df$label
    #> [1] ""                            "Change working directory..."
    #> [3] ""                            "Open script file..."        
    #> [5] "Save script..."              "Save script as..."
    

    And you want to wrap the contents with double quotes you could do something like:

    df$label <- paste0('"', df$label, '"')
    df$label
    
    #> [1] "\"\""                            "\"Change working directory...\""
    #> [3] "\"\""                            "\"Open script file...\""        
    #> [5] "\"Save script...\""              "\"Save script as...\""
    

    To update all columns at once

    Using base R (adapted from comment by @r2evans)

    df[] <- lapply(df, function(x) paste0('"', x, '"'))
    

    Or if you prefer to use something like dplyr you could do:

    library(dplyr)
    df <- mutate_all(df, ~ paste0('"', ., '"'))