This help page describes how to use the row and col arguments in set_* functions.

## The basics

The set_* functions for cell properties all have arguments like this: set_property(ht, row, col, value).

You can treat row and col arguments like arguments for data frame subsetting. For example, you can use row = 1:3 to get the first three rows, col = "salary" to specify the column named "salary", or row = ht\$salary >= 50000 to specify rows where a condition is true.

There are also a few extra tricks you can use:

• Write set_property(ht, x), omitting row and col, to set the property to x for all cells.

• Use everywhere to refer to all rows or all columns.

• Use final(n) to refer to the last n rows or columns.

• Use evens to get only even rows/columns and odds for only odd ones.

• Use stripe(n, from = m) to get every nth row/column starting at row/column m.

• Use dplyr functions like starts_with, contains and matches to specify columns (but not rows). See tidyselect::language for a full list.

## The gory details

How the row and col arguments are parsed depends on the number of arguments passed to the set_* function.

• If there are two arguments then the second argument is taken as the value and is set for all rows and columns.

• If there are four arguments:

• If row or col is numeric, character or logical, it is evaluated just as in standard subsetting. col will be evaluated in a special context provided by tidyselect::with_vars() to allow the use of dplyr functions.

• If row or col is a function,it is called with two arguments: the huxtable, and the dimension number being evaluated, i.e. 1 for rows, 2 for columns. It must return a vector of column indices. evens(), odds(), stripe() and final() return functions for this purpose.

## Examples

set_bold(jams, 2:4, 1:2, TRUE)
#>                               Type           Price
#>                               Strawberry      1.90
#>                               Raspberry       2.10
#>                               Plum            1.80
#>
#> Column names: Type, Price
set_background_color(jams, evens, everywhere,
"grey95")
#>                               Type           Price
#>                               Strawberry      1.90
#>                               Raspberry       2.10
#>                               Plum            1.80
#>
#> Column names: Type, Price
set_bold(jams, everywhere,
tidyselect::matches("yp"), TRUE)
#>                               Type           Price
#>                               Strawberry      1.90
#>                               Raspberry       2.10
#>                               Plum            1.80
#>
#> Column names: Type, Price

set_text_color(jams, 2:4, 1:2,
c("red", "violetred", "purple"))
#>                               Type           Price
#>                               Strawberry      1.90
#>                               Raspberry       2.10
#>                               Plum            1.80
#>
#> Column names: Type, Price