Skip to content

Instantly share code, notes, and snippets.

View jmbarbone's full-sized avatar

Jordan Mark Barbone jmbarbone

View GitHub Profile
pkg_version <- function(package, keep = c("all", "patch", "minor", "major")) {
keep <- match.arg(keep)
version <- utils::packageVersion(package)
version <- unclass(version)[[1L]]
version <- switch(
keep,
all = version,
patch = version[1:3],
minor = version[1:2],
major = version[1L]
@jmbarbone
jmbarbone / pak-install-pkgs.R
Last active March 5, 2025 17:32
custom wrappers for installing R
pak_install_pkgs <- function(
pkg,
new_lib = old_lib,
old_lib = .libPaths()[1L],
upgrade = FALSE,
update = TRUE,
dependencies = NA,
force = FALSE,
use_temp = FALSE,
pak_lib = NULL
@jmbarbone
jmbarbone / typed-function.md
Created October 5, 2024 01:38
playing around with some type setting for R functions
library(S7)
typed <- function(fun, ...) {
  ..params <- list(...)
  ..syms <- names(..params)
  stopifnot(..syms %in% names(formals(fun)))
  
  # should make this a function
  ..validator <- S7::new_class("..validator", properties = ..params)
@jmbarbone
jmbarbone / plotly-move-legend-nope-doesnt-work.R
Created July 23, 2024 21:15
I just want to move the legend to the cursor position....
library(plotly)
library(htmlwidgets)
x_unified_y_cursor <- "
// hovermode is 'x unified' but we don't want the default y/vertical
// positioning of the hover label. We want the hoverlabel to appear at the
// current cursor position (i.e. the y position of the cursor)
function(el) {
el.on('plotly_hover', function(data) {
console.log('event data: ', data);
@jmbarbone
jmbarbone / progressr-examples.R
Created June 24, 2024 16:06
examples of using the {progressr} package
library(progressr)
library(furrr)
handlers("void")
handlers(list(
handler_progress(
format = ":spin :current/:total (:message) [:bar] :percent in :elapsed ETA: :eta",
width = getOption("width"),
complete = "="
@jmbarbone
jmbarbone / sym-to-data.R
Last active June 20, 2024 16:27
Replaces `!!rlang::sym("...")` with `.data$...`
invisible(lapply(
list.files(
path = ".",
pattern = "\\.(r|rmd|qmd)$",
full.names = TRUE,
recursive = TRUE,
ignore.case = TRUE
),
function(path) {
pat <- "!!rlang::sym[(]\"([a-zA-z0-9_]+)\"[)]"
@jmbarbone
jmbarbone / lambda-functions-2.R
Last active June 3, 2024 03:23
base 'map()`-like functions
lambda <- function(expr, args = ".i") {
fun <- function() { }
formals(fun) <- structure(
rep(list(substitute()), length(args)),
class = "alist",
names = args
)
if (is.function(expr)) {
@jmbarbone
jmbarbone / databricks-env.R
Last active July 4, 2024 14:38
{databricks} but it's an R6 object
databricks <- local(envir = new.env(), {
.self <- environment()
.client <- NULL
.call <- function(method, args) {
if (is.null(.client)) {
stop(
"No client conigured",
"\nplease use $configure() function to set client",
call. = FALSE
@jmbarbone
jmbarbone / example.R
Created April 26, 2024 16:30
vline for plotly
x <- runif(1000)
plotly::plot_ly(
x = x,
type = "histogram",
) |>
plotly::layout(
bargap = 0.05,
shapes = list(
vline(mean(x), "mint", "mean"),
@jmbarbone
jmbarbone / git-arbor.sh
Last active August 31, 2024 17:48
clean up merged branches
# I usually alias this as `git arbor`
#
# I should also probably add https://stackoverflow.com/a/28502292 for the git-checkout one
git fetch -a -p && git branch --merged | grep -Ev \"(^\\*|master|main|dev)\" | xargs git branch -d