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