This function conditionally adds new child codes under a code. Where
recode_split()
removes the original code (splitting
it into the new codes), this function retains the original, adding the new
codes as sub-codes.
Usage
recode_addChildCodes(
input,
codes,
childCodes,
filter = TRUE,
output = NULL,
filenameRegex = ".*",
outputPrefix = "",
outputSuffix = "_rcAdded",
decisionLabel = NULL,
justification = NULL,
justificationFile = NULL,
preventOverwriting = rock::opts$get("preventOverwriting"),
encoding = rock::opts$get("encoding"),
silent = rock::opts$get("silent")
)
Arguments
- input
One of 1) a character string specifying the path to a file with a source; 2) an object with a loaded source as produced by a call to
load_source()
; 3) a character string specifying the path to a directory containing one or more sources; 4) or an object with a list of loaded sources as produced by a call toload_sources()
.- codes
A single character value with the code to add the child codes to.
- childCodes
A named list with specifying when to add which child code. Each element of this list is a filtering criterion that will be passed on to
get_source_filter()
to create the actual filter that will be applied. The name of each element is the code that will be applied to utterances matching that filter. When callingrecode_addChildCodes()
for a single source, instead of passing the filtering criterion, it is also possible to pass a filter (i.e. the result of the call toget_source_filter()
), which allows more finegrained control. Note that these 'child code filters' and the corresponding codes are processed sequentially in the order specified inchildCodes
. Any utterances coded with the code specified incodes
that do not match with any of the 'child code filters' specified as thechildCodes
elements will remain unchanged. To create a catch-all ('else') category, pass".*"
orTRUE
as a filter (see the example).- filter
Optionally, a filter to apply to specify a subset of the source(s) to process (see
get_source_filter()
).- output
If specified, the recoded source(s) will be written here.
- filenameRegex
Only process files matching this regular expression.
- outputPrefix, outputSuffix
The prefix and suffix to add to the filenames when writing the processed files to disk, in case multiple sources are passed as input.
- decisionLabel
A description of the (recoding) decision that was taken.
- justification
The justification for this action.
- justificationFile
If specified, the justification is appended to this file. If not, it is saved to the
justifier::workspace()
. This can then be saved or displayed at the end of the R Markdown file or R script usingjustifier::save_workspace()
.- preventOverwriting
Whether to prevent overwriting existing files when writing the files to
output
.- encoding
The encoding to use.
- silent
Whether to be chatty or quiet.
Examples
### Get path to example source
examplePath <-
system.file("extdata", package="rock");
### Get a path to one example file
exampleFile <-
file.path(examplePath, "example-1.rock");
### Load example source
loadedExampleSource <- rock::load_source(exampleFile);
### Split a code into two codes, showing progress (the backticks are
### used to be able to specify a name that starts with an underscore)
recoded_source <-
rock::recode_addChildCodes(
loadedExampleSource,
codes="childCode1",
childCodes = list(
`_and_` = " and ",
`_book_` = "book",
`_else_` = TRUE
),
silent=FALSE
);
#> Creating 3 source filters.
#> To those occurrences of code 'childCode1' that match the respective filters, adding child codes 'childCode1>_and_', 'childCode1>_book_' & 'childCode1>_else_'.
#> Using regular expression '(\[\[|>)childCode1(\]\]|>)'.
#>
#> Out of the 132 utterances in the provided source, 8 match both the general filter and the filter specified for child code '_and_' (and have not been processed in a previous step). Of those, 2 have been coded with code 'childCode1', so to those utterances, child code '[[childCode1>_and_]]' will now be appended.
#> --PROCESSED: Lorem Ipsum is simply dummy text of the printing and typesetting industry. [[parentCode1>childCode1]] [[childCode1>_and_]]
#> --PROCESSED: by accident, sometimes on purpose (injected humour and the like). [[parentCode1>childCode1>grandchildCode3]] [[childCode1>_and_]]
#>
#> Out of the 132 utterances in the provided source, 2 match both the general filter and the filter specified for child code '_book_' (and have not been processed in a previous step). Of those, 1 have been coded with code 'childCode1', so to those utterances, child code '[[childCode1>_book_]]' will now be appended.
#> --PROCESSED: ~specimen book. [[parentCode1>childCode2]] [[childCode1]] [[intensity||2]] [[childCode1>_book_]]
#>
#> Out of the 132 utterances in the provided source, 129 match both the general filter and the filter specified for child code '_else_' (and have not been processed in a previous step). Of those, 3 have been coded with code 'childCode1', so to those utterances, child code '[[childCode1>_else_]]' will now be appended.
#> --PROCESSED: using 'Content here, content here', making it look like readable English. [[parentCode1>childCode1>grandchildCode1]] [[childCode1>_else_]]
#> --PROCESSED: ~still in their infancy. [[parentCode1>childCode1>grandchildCode2]] [[childCode1>_else_]]
#> --PROCESSED: accompanied by English versions from the 1914 translation by H. Rackham. [[childCode1>grandchildCode2]] [[childCode1>_else_]]
#>
#> Added child codes '[[childCode1>_and_]]', '[[childCode1>_book_]]' & '[[childCode1>_else_]]' to 6 utterances that were coded with code 'childCode1'.
#>