Skip to content

Instantly share code, notes, and snippets.

@AlbanSagouis
AlbanSagouis / targets-presentation.md
Created April 19, 2023 11:31
Introduction to [targets] - 1 hour course plan
@AlbanSagouis
AlbanSagouis / microbenchmarking_uniqueN.r
Created January 31, 2022 15:04
microbenchmarking data.table::uniqueN(x) vs. length(unique(x))
library(microbenchmark)
nrows <- 10^5
tst <- data.table::data.table(
char = c("bb", "ds", "ok", "pb")[sample(1:4, nrows, replace = TRUE)]
)
microbenchmark(times = 1000L,
"base" = tst[, length(unique(char))],
"data.table" = tst[, data.table::uniqueN(char)]
)
@AlbanSagouis
AlbanSagouis / microbenchmarking_ifelse-if_else-fifelse_fcase_match_and_chmatch.r
Created January 31, 2022 14:58
microbenchmarking various ways of creating columns depending on values in another column of a data.table
library(microbenchmark)
nrows <- 10^5
tst1 <- data.table::data.table(
char = c("bb", "ds", "ok", "pb")[sample(1:4, nrows, replace = TRUE)]
)
tst2 <- tst3 <- tst4 <- tst5 <- tst6 <- data.table::copy(tst1)
microbenchmark(
times = 200L,
"base::ifelse" = tst1[, new := base::ifelse(char == "bb", "level1",
@AlbanSagouis
AlbanSagouis / reading_utf16_table.R
Last active August 7, 2023 13:14
This simple function opens UTF-16 encoded delimited tables (such as Glonaf data) in R. Separator, decimal separator and other arguments can be passed to `data.table::fread` with `...`
read_utf16_table <- function(path, ...) {
stringi::stri_read_lines(
con = path,
encoding = "UTF-16LE") |>
stringi::stri_join(collapse = "\n") |>
data.table::fread(sep = "\t", ...)
}