Quick and essential 'R' tricks for better, cleaner, more reproducible scripts.
quickcode is a collection of small, dependable helpers for everyday R scripting: a full family of not.* validation functions, PHP-style array/data-frame operations (push, pop, shuffle, rep), nullish-coalescing and "not in" operators, outlier and distribution detection, super variables, function-usage tracking, RStudio snippet addins, and more. None of it is flashy — it just removes boilerplate you'd otherwise rewrite in every project.
Installation
Install the released version from CRAN:
install.packages("quickcode")Or install the development version from GitHub:
# install.packages("devtools") devtools::install_github("oobianom/quickcode")
Load it like any other package:
library(quickcode)Why quickcode
- Consistent negations.
is.null()has no built-in opposite. quickcode addsnot.null(),not.na(),not.numeric(),not.integer(),not.logical(),not.vector(),not.data(),not.environment(),not.duplicated(),not.image(),not.inherits(),not.exists()and friends, so conditionals read the way you'd say them out loud. - PHP-style array ergonomics.
vector_push(),vector_pop(),data_push(),data_pop(),list_push(),data_shuffle(),data_rep()bring the array functions many scripters miss from other languages, working across vectors, lists, and data frames. - Operators that save keystrokes.
%nin%(not in),%or%(nullish coalescing),%eo%(error coalescing), and%match%(string similarity) shorten common conditional patterns. - One-call environment resets.
refresh()/clean()clear the console, clear the environment, reset the working directory, and reload files/libraries in a single call. - Statistics and outlier helpers. Z-scores, IQR-based and grouped outlier detection, distribution fit-checking (
is.normal,is.poisson,is.weibull, ...), geometric mean/SD/CV, and histogram comparisons. - Super variables.
newSuperVar()creates a variable that is accessible and mutable from any scope, with optional locking, class enforcement, and a limited number of permitted edits. - RStudio addins. Insert header comments, section dividers, or environment-reset snippets straight from the RStudio Addins menu — no need to remember or retype boilerplate.
- Function usage tracking.
track_func()wraps functions to record call frequency, timing, and argument patterns, for lightweight profiling and usage analytics.
Quick examples
The not.* family
not.null(NULL) # TRUE not.na(NA) # FALSE not.integer(45L) # FALSE not.integer(45) # TRUE
Nullish coalescing and "not in"
NULL %or% "default" # "default" NA %or% "default" # "default" 5 %or% "default" # 5 5 %nin% c(1:10) # FALSE 5 %nin% c(11:20) # TRUE
PHP-style vector and data frame helpers
p1 <- c(6, 7, 8) p2 <- c(1, 2, 3) vector_push(p1, p2) p1 #> [1] 6 7 8 1 2 3 df1 <- data.frame(ID = 1:10, ID2 = 1:10) df2 <- data.frame(ID = 11:20, ID2 = 21:30) data_push(df1, df2, "rows")
One-line variable initialization
init(a, b, c) # a, b, c set to NULL init(x, y, z, value = 5) # x, y, z set to 5
Environment reset
quickcode::refresh() quickcode::clean( setwd = "/path/to/project", source = c("file1.R", "file2.R"), load = c("data.RData") )
Super variables
newSuperVar(config, value = list(threshold = 10), lock = TRUE) config # view current value config.set(list(threshold = 20)) # blocked while locked
Outlier and distribution checks
x <- c(rnorm(100), 50) detect_outlier2(x) zscore(x) is.normal(rnorm(100))
See vignette("quickcode_r_introduction") for a longer walkthrough.
Function reference
NOT / validation functions
| Function | Description |
|---|---|
not.null |
Not NULL |
not.na |
Not NA |
not.empty / is.empty |
Not empty / is empty |
not.numeric |
Not numeric |
not.integer |
Not an integer |
not.logical |
Not logical |
not.vector |
Not a vector |
not.data |
Not a data object |
not.duplicated |
Not duplicated elements |
not.environment |
Not an environment |
not.image / is.image |
File extension is/isn't an image |
not.inherits |
Does not inherit from specified classes |
not.exists |
Object does not exist |
has.error |
Check if a call or expression produces an error |
Operators
| Operator | Description |
|---|---|
%nin% (alias %!in%) |
Not in vector or array |
%or% |
Nullish coalescing operator |
%eo% |
Error coalescing operator |
%match% |
Percentage string similarity match |
%.% |
Simple function chaining |
PHP-style array / data operations
| Function | Description |
|---|---|
vector_push / vector_pop |
Add / remove elements from a vector |
list_push |
Add elements to a list |
data_push / data_pop |
Add / remove rows or columns from a data frame |
data_pop_filter |
Remove elements from data matching a filter |
data_rep / rows.rep / cols.rep |
Duplicate rows or columns X times |
data_shuffle / list_shuffle / vector_shuffle |
Shuffle a data frame, list, or vector |
switch_rows / switch_cols |
Swap two rows or columns |
sample_by_column |
Re-sample a dataset by column |
mutate_filter |
Mutate only a subset of a dataset |
add_key (alias indexed) |
Add index keys to a vector, list, data frame, or matrix |
Variables & environment
| Function | Description |
|---|---|
init |
Initialize one or more variables/objects at once |
newSuperVar |
Create a variable accessible/mutable from any scope, with locking and edit limits |
setOnce |
Set a variable only once |
refresh / clean / libraryAll |
Clear environment/console, reset working directory, load files & libraries |
summarize.envobj |
Summarize environment objects and their sizes |
lastwd |
Return to the previous working directory |
Statistics, outliers & distributions
| Function | Description |
|---|---|
zscore / zscore_outlier / zscore_outlier2 |
Z-score calculation and z-score-based outlier flagging |
detect_outlier / detect_outlier2 / iqr_outlier |
Outlier detection (including grouped) |
is.normal, is.lognormal, is.uniform, is.poisson, is.gamma, is.weibull, is.cauchy, is.logistic |
Test whether data fits a given distribution |
getDistribution |
Fit-check data against a distribution |
geo.mean, geo.sd, geo.cv |
Geometric mean, standard deviation, coefficient of variation |
mode.calc |
Mode of a numeric or character vector |
na.cumsum |
Cumulative sum with NA removal |
normalize.vector |
Normalize a numeric vector to [0, 1] |
sub.range / in.range |
Range difference / range membership checks |
unique_len |
Combine unique() and length() |
pairDist |
Distance of points from a cluster center |
compHist |
Compare histograms of two distributions |
Machine learning & modeling utilities
| Function | Description |
|---|---|
cat_to_num / cat_to_num2 |
Convert categorical values to numeric |
from_tensor_slices |
Create tensor-like slices from a data frame or matrix |
multihead_att |
Multi-head attention computation |
learn_rate_scheduler |
Learning rate scheduling utilities |
make_dosing_df |
Create subject-by-time dosing records with covariates |
Strings & text
| Function | Description |
|---|---|
bionic_txt |
Generate bionic-reading formatted text |
randString |
Generate a random string |
strsplit.bool / strsplit.num |
Split a string into a boolean / numeric vector |
percent_match |
Percentage match between two strings |
ndecimal |
Count decimal places in a number |
as.boolean / yesNoBool |
Convert between boolean representations |
extract_comment / remove_comment / remove_content_in_quotes |
Text/comment extraction and cleanup |
getDate |
Extract all dates from a string |
extract_IP |
Extract IP addresses from a string |
Dates
| Function | Description |
|---|---|
date1to3 / date3to1 |
Combine vectors into a Date, or split a Date into vectors |
getWeekSeq |
Convert dates into numeric week counts |
is.leap |
Check whether a year is a leap year |
fAddDate |
Append a date to a filename |
is.increasing / is.decreasing |
Check whether values in a vector are increasing/decreasing |
Files & filesystem
| Function | Description |
|---|---|
duplicate |
Duplicate a file with global text replacement |
ai.duplicate |
Prompt-guided duplication and editing of files |
trim.file |
Remove empty lines from a file |
sort_file_type / sort_length |
Sort a vector by file type or content length |
read.csv.print / read.table.print |
Read and preview the first X rows/columns of a file |
insertInText |
Insert a string into the current RStudio file (Shiny helper) |
RStudio addins & snippets
| Addin / function | Description |
|---|---|
add.header |
Add a header comment to the current R file |
header.rmd |
Add a header comment to the current Rmd file |
add.sect.comment |
Insert a custom section comment |
add.snippet.clear |
Insert a console-clear / set-directory snippet |
Colors & shapes
| Function | Description |
|---|---|
rcolorconst |
Named R color constants |
mix.color / mix.cols.btw |
Blend two or more colors |
setDisAlpha / unsetDisAlpha |
Set/unset color transparency |
create_shape |
Create geometric shapes with optional text |
Package & repo utilities
| Function | Description |
|---|---|
find_packages |
Search CRAN packages by keyword |
archivedPkg |
List all CRAN-archived R packages |
rDecomPkg |
Check whether a package has been decommissioned from CRAN |
getGitRepoStart / getGitRepoChange |
Fetch a GitHub repo's creation / last-updated date |
track_func |
Track function call frequency, timing, and usage patterns |
Math & misc
| Function | Description |
|---|---|
plus / minus / inc |
Increment or decrement a vector by a value |
number |
Generate random integers |
const |
Common mathematical constants |
math.mm / math.qt |
Miscellaneous math and confidence-interval computations |
error.out (%eo%) |
Return an alternative value if an expression errors |
or (%or%) |
Return an alternative value if an expression is empty/NA/NULL |
chain_sep (%.%) / chain_func |
Simple function chaining |
This list covers the most commonly used functions; run library(help = "quickcode") or browse the man/ directory for the complete, authoritative reference with full argument details and runnable examples.
Vignettes
vignette("quickcode_r_introduction")— general tour of the packagevignette("add_today_date_to_filenames_quickcode")— appending dates to filenames withfAddDate()vignette("nullish_coalescing_operator_r")— using%or%and%eo%vignette("track_function_usage_r")— profiling function usage withtrack_func()
Getting help
- Bug reports and feature requests: https://github.com/oobianom/quickcode/issues
- Package website: https://quickcode.rpkg.net
Authors
- Obinna (OBI) Obianom — idonshayo@gmail.com
- Brice Richard — wem3mew@msn.com
License
MIT © Obinna Obianom. See LICENSE for details.
