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 incodesthat do not match with any of the 'child code filters' specified as thechildCodeselements will remain unchanged. To create a catch-all ('else') category, pass".*"orTRUEas 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'.
#>
