printing blanks instead of NA's when using formattable in R

前端 未结 2 772
走了就别回头了
走了就别回头了 2021-02-14 18:44

Consider the example data.frame

df <- data.frame(
  id = 1:4,
  name = c(\"Bob\", \"Ashley\", \"James\", \"David\"), 
  age = c(48, NA, 40, 28),
  test1_score         


        
2条回答
  •  迷失自我
    2021-02-14 19:29

    You could use the sprintf function to format the numeric columns as strings with the desired number of decimal places. In the code below, sprintf converts NA to the string "NA", which we then convert to an empty string.

    # Function to convert numeric values to strings with a given number of 
    #  decimal places, and convert NA to empty string
    fnc = function(var, decimal.places) {
      var = sprintf(paste0("%1.",decimal.places,"f"), var)
      var[var=="NA"] = ""
      var
    }
    
    # Select the columns we want to reformat
    vars = c('age', 'test1_score')
    
    # Apply the function to the desired columns with the desired number of decimal places
    df[ , vars] = mapply(fnc, df[ ,vars], 2:3)
    
    formattable(df, list(
      age = color_tile("white", "orange"),
      test1_score = color_bar("pink", 'proportion', 0.2)
    ))
    

提交回复
热议问题