Simple variable interpolation in texts

qq(..., envir = parent.frame(), code.pattern = NULL, collapse = TRUE, sep = " ")

Arguments

...

Text string in which variables are marked with certain rules

envir

Environment where to look for variables. By default it is the environment where qq is envoked. It can also be a list in which element names are the variable names to be interpolated.

code.pattern

Pattern of marks for the variables. By default it is @\\{CODE\\} which means you can write your variable as @{variable}. This value can be a vector that all patterns are searched.

collapse

If variables return vector of length larger than one, whether collapse into one string or return a vector

sep

Separator character when there are multiple templates.

Details

I like variable interpolation in Perl. But in R, if you want to concatenate plain text and variables, you need to use functions such as paste. However, if there are so many variables, quotes, braces in the string you want to construct, it would be painful.

This function allows you to construct strings as in Perl style. Variables are marked in the text with certain rule. qq will look up these variables in user's environment and replace the variable marks with their real values.

For more explaination of this function, please refer to vignette.

Author

Zuguang Gu <z.gu@dkfz.de>

Examples

a = 1
b = "text"
qq("a = @{a}, b = '@{b}'")
#> [1] "a = 1, b = 'text'"
qq("a = @{a}", "b = '@{b}'", sep = ", ")
#> [1] "a = 1, b = 'text'"

a = 1:2
qq("a = @{a}, b = '@{b}'")
#> [1] "a = 1, b = 'text'a = 2, b = 'text'"
qq("a = @{a}, b = '@{b}'", collapse = FALSE)
#> [1] "a = 1, b = 'text'" "a = 2, b = 'text'"

a = 1
qq("a = `a`, b = '`b`'", code.pattern = "`CODE`")
#> [1] "a = 1, b = 'text'"