
This help page describes how to use the row
and col
arguments in set_*
functions.
The set_*
functions for cell properties all have arguments like this:
set_property(ht, row, col, value, byrow = FALSE)
.
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 every(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 select_helpers
for a full list.
Use where(condition)
, and omit the col
argument, to get cells where condition
is TRUE
.
Set byrow = TRUE
to set properties by row rather than by column.
[=[.data.frame]: R:=[.data.frame
How the row and col arguments are parsed depends on the number of arguments passed to the set_*
function.
If there are two arguments (excluding byrow
) then the second argument is taken as the
value and is set for all rows and columns.
If there are three arguments, then the third argument is taken as the value, and
row
must be a matrix with two columns. Each row of this matrix
gives the row, column indices of a single cell. This uses R's little known feature of
subsetting with matrices - see base::Extract()
.
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()
, every()
and final()
return functions for this purpose.
# NOT RUN {
ht <- huxtable(a = 1:5, b = 5:1)
set_bold(ht, 2:4, 1:2, TRUE)
set_bold(ht, odds, evens, TRUE)
set_bold(ht, everywhere, tidyselect::matches('[aeiou]'), TRUE)
set_bold(ht, where(ht == 1), TRUE)
set_text_color(ht, 2:3, 1:2, c('red', 'blue'))
set_text_color(ht, 2:3, 1:2, c('red', 'blue'), byrow = TRUE)
# }
Run the code above in your browser using DataLab