Learn R Programming

⚠️There's a newer version (0.7.1) of this package.Take me there.

Utilities for developing R software

The {oeli} package offers a collection of handy functions that I found useful while developing R packages. Perhaps you’ll find them helpful too!

Installation

The released package version can be installed from CRAN via:

install.packages("oeli")

Demos

The package includes helpers for various tasks and objects. Some demos are shown below. Click the headings for reference pages with documentation on all available helpers in each category.

Distributions

The package has density and sampling functions for distributions not in base R, such as Dirichlet, multivariate normal, truncated normal, and Wishart. For faster computation, an Rcpp implementation is also available.

ddirichlet(x = c(0.2, 0.3, 0.5), concentration = 1:3)
#> [1] 4.5
rdirichlet(concentration = 1:3)
#> [1] 0.2032900 0.2310928 0.5656171

Function helpers

Retrieving default arguments of a function:

f <- function(a, b = 1, c = "", ...) { }
function_defaults(f)
#> $b
#> [1] 1
#> 
#> $c
#> [1] ""

Indexing helpers

Create all possible permutations of vector elements:

permutations(LETTERS[1:3])
#> [[1]]
#> [1] "A" "B" "C"
#> 
#> [[2]]
#> [1] "A" "C" "B"
#> 
#> [[3]]
#> [1] "B" "A" "C"
#> 
#> [[4]]
#> [1] "B" "C" "A"
#> 
#> [[5]]
#> [1] "C" "A" "B"
#> 
#> [[6]]
#> [1] "C" "B" "A"

Package helpers

Quickly have a basic logo for your new package:

package_logo("my_package", brackets = TRUE, use_logo = FALSE)

How to print a matrix without filling up the entire console?

x <- matrix(rnorm(10000), ncol = 100, nrow = 100)
print_matrix(x, rowdots = 4, coldots = 4, digits = 2, label = "what a big matrix")
#> what a big matrix : 100 x 100 matrix of doubles 
#>         [,1]  [,2]  [,3] ... [,100]
#> [1,]    0.01  0.59 -1.02 ...   1.73
#> [2,]   -0.11 -0.01  2.37 ...   0.22
#> [3,]   -1.87  0.09 -1.24 ...  -0.93
#> ...      ...   ...   ... ...    ...
#> [100,]   0.6 -0.99 -0.26 ...   -0.9

Simulation helpers

Let’s simulate a Markov chain:

Gamma <- sample_transition_probability_matrix(dim = 3)
simulate_markov_chain(Gamma = Gamma, T = 20)
#>  [1] 2 2 3 2 1 2 2 2 2 1 2 2 1 1 2 3 3 1 1 1

Transformation helpers

The group_data_frame() function groups a given data.frame based on the values in a specified column:

df <- data.frame("label" = c("A", "B"), "number" = 1:10)
group_data_frame(df = df, by = "label")
#> $A
#>   label number
#> 1     A      1
#> 3     A      3
#> 5     A      5
#> 7     A      7
#> 9     A      9
#> 
#> $B
#>    label number
#> 2      B      2
#> 4      B      4
#> 6      B      6
#> 8      B      8
#> 10     B     10

Validation helpers

Is my matrix a proper transition probability matrix?

matrix <- diag(4)
matrix[1, 2] <- 1
check_transition_probability_matrix(matrix)
#> [1] "Must have row sums equal to 1"

Copy Link

Version

Install

install.packages('oeli')

Monthly Downloads

854

Version

0.6.0

License

GPL (>= 3)

Issues

Pull Requests

Stars

Forks

Maintainer

Lennart Oelschläger

Last Published

September 17th, 2024

Functions in oeli (0.6.0)

function_defaults

Get default function arguments
matrix_diagonal_indices

Get indices of matrix diagonal
matrix_indices

Get matrix indices
oeli-package

oeli: Utilities for Developing Data Science Software
insert_vector_entry

Insert entry in vector
package_logo

Creating a basic logo for an R package
merge_lists

Merge named lists
permutations

Build permutations
dmvnorm_cpp

Multivariate normal distribution
insert_matrix_column

Insert column in matrix
user_confirm

User confirmation
quiet

Silence R code
simulate_markov_chain

Simulate Markov chain
stationary_distribution

Stationary distribution
unexpected_error

Handling of an unexpected error
print_matrix

Print (abbreviated) matrix
sample_correlation_matrix

Sample correlation matrix
sample_covariance_matrix

Sample covariance matrix
system_information

General system level information
timed

Interrupt long evaluations
renv_development_packages

Using development packages when working with {renv}
identical_structure

Check if two objects have identical structure
try_silent

Try an expression silently
input_check_response

Standardized response to an input check
match_numerics

Best-possible match of two numeric vectors
match_arg

Argument matching
vector_occurrence

Find the positions of first or last occurrence of unique vector elements
subsets

Generate vector subsets
group_data_frame

Grouping of a data.frame
variable_name

Determine variable name
sample_transition_probability_matrix

Sample transition probability matrices
chunk_vector

Split a vector into chunks
check_covariance_matrix

Check covariance matrix
Dictionary

Dictionary R6 Object
check_probability_vector

Check probability vector
check_list_of_lists

Check list of lists
check_transition_probability_matrix

Check transition probability matrix
check_correlation_matrix

Check correlation matrix
Storage

Storage R6 Object
ddirichlet_cpp

Dirichlet distribution
delete_data_frame_columns

Deleting data.frame columns
function_body

Extract function body
dtnorm_cpp

Truncated normal distribution
correlated_regressors

Simulate correlated regressor values
check_numeric_vector

Check numeric vector
function_arguments

Get function arguments
dwishart_cpp

Wishart distribution
do.call_timed

Measure computation time
diff_cov

Difference and un-difference covariance matrix
cov_to_chol

Cholesky root of covariance matrix