| info_snippet {pointblank} | R Documentation |
Generate a useful text 'snippet' from the target table
Description
Getting little snippets of information from a table goes hand-in-hand with
mixing those bits of info with your table info. Call info_snippet() to
define a snippet and how you'll get that from the target table. The snippet
definition is supplied either with a formula, or, with a
pointblank-supplied snip_*() function. So long as you know how to
interact with a table and extract information, you can easily define snippets
for a informant object. And once those snippets are defined, you can insert
them into the info text as defined through the other info_*() functions
(info_tabular(), info_columns(), and info_section()). Use curly braces
with just the snippet_name inside (e.g., "This column has {n_cat} categories.").
Usage
info_snippet(x, snippet_name, fn)
Arguments
x |
The pointblank informant object
A pointblank informant object that is commonly created through the
use of the |
snippet_name |
The snippet name
The name for snippet, which is used for interpolating the result of the
snippet formula into info text defined by an |
fn |
Function for snippet text generation
A formula that obtains a snippet of data from the target table. It's best
to use a leading dot ( |
Value
A ptblank_informant object.
Snip functions provided in pointblank
For convenience, there are several snip_*() functions provided in the
package that work on column data from the informant's target table. These
are:
-
snip_list(): get a list of column categories -
snip_stats(): get an inline statistical summary -
snip_lowest(): get the lowest value from a column -
snip_highest(): get the highest value from a column
As it's understood what the target table is, only the column in each of
these functions is necessary for obtaining the resultant text.
YAML
A pointblank informant can be written to YAML with yaml_write() and the
resulting YAML can be used to regenerate an informant (with
yaml_read_informant()) or perform the 'incorporate' action using the target
table (via yaml_informant_incorporate()). Snippets are stored in the YAML
representation and here is is how they are expressed in both R code and in
the YAML output (showing both the meta_snippets and columns keys to
demonstrate their relationship here).
# R statement
informant %>%
info_columns(
columns = date_time,
`Latest Date` = "The latest date is {latest_date}."
) %>%
info_snippet(
snippet_name = "latest_date",
fn = ~ . %>% dplyr::pull(date) %>% max(na.rm = TRUE)
) %>%
incorporate()
# YAML representation
meta_snippets:
latest_date: ~. %>% dplyr::pull(date) %>% max(na.rm = TRUE)
...
columns:
date_time:
_type: POSIXct, POSIXt
Latest Date: The latest date is {latest_date}.
date:
_type: Date
item_count:
_type: integer
Examples
Take the small_table dataset included in pointblank and assign it to
test_table. We'll modify it later.
test_table <- small_table
Generate an informant object, add two snippets with info_snippet(),
add information with some other info_*() functions and then incorporate()
the snippets into the info text. The first snippet will be made with the
expression ~ . %>% nrow() (giving us the number of rows in the dataset) and
the second uses the snip_highest() function with column a (giving us
the highest value in that column).
informant <-
create_informant(
tbl = ~ test_table,
tbl_name = "test_table",
label = "An example."
) %>%
info_snippet(
snippet_name = "row_count",
fn = ~ . %>% nrow()
) %>%
info_snippet(
snippet_name = "max_a",
fn = snip_highest(column = "a")
) %>%
info_columns(
columns = a,
info = "In the range of 1 to {max_a}. ((SIMPLE))"
) %>%
info_columns(
columns = starts_with("date"),
info = "Time-based values (e.g., `Sys.time()`)."
) %>%
info_columns(
columns = date,
info = "The date part of `date_time`. ((CALC))"
) %>%
info_section(
section_name = "rows",
row_count = "There are {row_count} rows available."
) %>%
incorporate()
We can print the informant object to see the information report.
informant
Let's modify test_table with some dplyr to give it more rows and an
extra column.
test_table <- dplyr::bind_rows(test_table, test_table) %>% dplyr::mutate(h = a + c)
Using incorporate() on the informant object will cause the snippets to be
reprocessed, and, the info text to be updated.
informant <- informant %>% incorporate() informant
Function ID
3-5
See Also
Other Information Functions:
info_columns(),
info_columns_from_tbl(),
info_section(),
info_tabular(),
snip_highest(),
snip_list(),
snip_lowest(),
snip_stats()