The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
The {scribe}
package provides a means of defining
command line argument inputs for use with the Rscript
utility. Users will primarily use the command_args()
function to capture the command line arguments and initialize a
scribeCommandArgs
object. A scribeCommandArgs
is a Reference
Class object with methods to configure how to parse these
arguments for use within R.
Let’s look at to use the {scribe}
class first. Our goal
is to wrap a simple function to generate a sequence of integers or
letters. Here we build out a scribeCommandArgs
object, add
a couple of arguments with the $add_argument()
method, then
parse into a named list with $parse()
.
ca <- command_args(c("-n", "5", "--method", "numbers"))
ca$add_argument("-n", default = 1L)
ca$add_argument("--method", default = "letters")
args <- ca$parse()
out <- seq_len(args$n)
method <- match.arg(args$method, c("letters", "numbers"))
if (method == "letters") {
out <- letters[out]
}
out
#> [1] 1 2 3 4 5
In the example above we specify what the command line arguments are
within command_args()
. The intended utility of this is to
capture these arguments when passe within an Rscript
file.
Below is the same structure, but as we would expect from within a script
intended to be called from a command line. command_args()
will grab whatever command line arguments are passed to the script.
#!/usr/bin/env Rscript
# filename: seq_len.R
library(scribe)
ca <- command_args()
ca$add_argument("-n", default = 1L)
ca$add_argument("--method", default = "letters")
args <- ca$parse()
out <- seq_len(args$n)
method <- match.arg(args$method, c("letters", "numbers"))
if (method == "letters") {
out <- letters[out]
}
out
seq_len.R -n 3
#> [1] "a" "b" "c"
seq_len.R -n 3 --method numbers
#> [1] 1 2 3
One way I like to use {scribe}
is by passing the values
directly to another function via do.call()
.
Two examples provided that find a specified dataset and then perform
something to it. Were I to use this personally, I would probably pass a
file path and use a read function first, rather than the
get()
function.
my_summary <- function(data, levels = 7, sig_figs = 3, q_type = 7) {
data <- get(data, mode = "list")
stopifnot(is.data.frame(data))
summary(data, maxsum = levels, digits = sig_figs, quantile.type = q_type)
}
my_model <- function(data, correlation = FALSE) {
data <- get(data, mode = "list")
stopifnot(is.data.frame(data))
form <- stats::DF2formula(data)
mod <- stats::lm(form, data)
summary(mod, correlation = correlation)
}
ca <- command_args(string = "CO2 --levels 3 --sig-figs 2 --q-type 3")
ca$add_description("Summarise a dataset")
ca$add_argument(
"data",
info = "Name of the dataset to find"
)
ca$add_argument(
"--levels",
default = 7L,
info = "Maximum number of levels shown for factors"
)
ca$add_argument(
"--sig-figs",
default = 3L,
info = "Number of significant figures"
)
ca$add_argument(
"--q-type",
default = 7L,
info = "Quantile type"
)
args <- ca$parse()
do.call(my_summary, args)
#> Plant Type Treatment conc uptake
#> Qn1 : 7 Quebec :42 nonchilled:42 Min. : 95 Min. : 7.7
#> Qn2 : 7 Mississippi:42 chilled :42 1st Qu.: 175 1st Qu.:17.9
#> (Other):70 Median : 350 Median :28.1
#> Mean : 435 Mean :27.2
#> 3rd Qu.: 675 3rd Qu.:37.1
#> Max. :1000 Max. :45.5
ca <- command_args(string = "attitude --correlation")
ca$add_argument(
"data",
info = "Name of the dataset to find"
)
ca$add_argument(
"--correlation",
action = "flag",
info = "When set, prints the correlation matrix of estimated parameters"
)
args <- ca$parse()
do.call(my_model, args)
#>
#> Call:
#> stats::lm(formula = form, data = data)
#>
#> Residuals:
#> Min 1Q Median 3Q Max
#> -10.9418 -4.3555 0.3158 5.5425 11.5990
#>
#> Coefficients:
#> Estimate Std. Error t value Pr(>|t|)
#> (Intercept) 10.78708 11.58926 0.931 0.361634
#> complaints 0.61319 0.16098 3.809 0.000903 ***
#> privileges -0.07305 0.13572 -0.538 0.595594
#> learning 0.32033 0.16852 1.901 0.069925 .
#> raises 0.08173 0.22148 0.369 0.715480
#> critical 0.03838 0.14700 0.261 0.796334
#> advance -0.21706 0.17821 -1.218 0.235577
#> ---
#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#>
#> Residual standard error: 7.068 on 23 degrees of freedom
#> Multiple R-squared: 0.7326, Adjusted R-squared: 0.6628
#> F-statistic: 10.5 on 6 and 23 DF, p-value: 1.24e-05
#>
#> Correlation of Coefficients:
#> (Intercept) complaints privileges learning raises critical
#> complaints -0.07
#> privileges -0.12 -0.37
#> learning -0.16 -0.30 -0.14
#> raises -0.08 -0.52 0.08 -0.21
#> critical -0.66 0.00 -0.02 0.20 -0.28
#> advance 0.02 0.40 -0.18 -0.35 -0.43 -0.13
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.