The formats function extracts all assigned formats from a
data frame, and returns them in a named list. The function also
assigns formats from a named list.
formats(x)
formats(x) <- valueA named list of formats.
If formats are assigned to the "format" attributes of the data frame
columns, the formats function will extract those formats.  The
function will return the formats in a named list, where the names
correspond to the name of the column that the format was assigned to.
If a column does not have a format attribute assigned, that column
will not be included in the list.
When used on the receiving side of an assignment, the function will assign formats to a data frame. The formats should be in a named list, where each name corresponds to the data frame column to assign the format to.
The formats function can also accept a format catalog as input.
This feature allows you to save formats in metadata, load them into a
format catalog, and quickly assign them to a data frame or tibble.  See
the fcat function for additional information.
Finally, if you wish to clear out format attributes, assign a NULL
value to the formats function.
fdata to display formatted data,
value to create user-defined formats,
fapply to apply formats to a vector, and
fcat to create a format catalog. Also see
FormattingStrings for documentation on formatting strings.
# Take subset of data
df1 <- mtcars[1:5, c("mpg", "cyl") ]
# Print current state
print(df1)
#>                    mpg cyl
#> Mazda RX4         21.0   6
#> Mazda RX4 Wag     21.0   6
#> Datsun 710        22.8   4
#> Hornet 4 Drive    21.4   6
#> Hornet Sportabout 18.7   8
#                    mpg cyl
# Mazda RX4         21.0   6
# Mazda RX4 Wag     21.0   6
# Datsun 710        22.8   4
# Hornet 4 Drive    21.4   6
# Hornet Sportabout 18.7   8
# Assign formats
attr(df1$mpg, "format") <- value(condition(x >= 20, "High"),
                                 condition(x < 20, "Low"))
#> # A user-defined format: 2 conditions
#>   Name Type Expression Label Order
#> 1    x    U    x >= 20  High    NA
#> 2    x    U     x < 20   Low    NA
attr(df1$cyl, "format") <- function(x) format(x, nsmall = 1)
# Display formatted data
fdata(df1)
#>                    mpg cyl
#> Mazda RX4         High 6.0
#> Mazda RX4 Wag     High 6.0
#> Datsun 710        High 4.0
#> Hornet 4 Drive    High 6.0
#> Hornet Sportabout  Low 8.0
#                    mpg cyl
# Mazda RX4         High 6.0
# Mazda RX4 Wag     High 6.0
# Datsun 710        High 4.0
# Hornet 4 Drive    High 6.0
# Hornet Sportabout  Low 8.0
# Extract format list
lst <- formats(df1)
# Alter format list and reassign
lst$mpg <- value(condition(x >= 22, "High"),
                 condition(x < 22, "Low"))
#> # A user-defined format: 2 conditions
#>   Name Type Expression Label Order
#> 1    x    U    x >= 22  High    NA
#> 2    x    U     x < 22   Low    NA
lst$cyl <- function(x) format(x, nsmall = 2)
formats(df1) <-  lst
# Display formatted data
fdata(df1)
#>                    mpg  cyl
#> Mazda RX4          Low 6.00
#> Mazda RX4 Wag      Low 6.00
#> Datsun 710        High 4.00
#> Hornet 4 Drive     Low 6.00
#> Hornet Sportabout  Low 8.00
#                    mpg  cyl
# Mazda RX4          Low 6.00
# Mazda RX4 Wag      Low 6.00
# Datsun 710        High 4.00
# Hornet 4 Drive     Low 6.00
# Hornet Sportabout  Low 8.00
# Clear formats
formats(df1) <- NULL
# Confirm formats are cleared 
formats(df1)
#> list()
# list()