Skip to content

Instantly share code, notes, and snippets.

View brodieG's full-sized avatar

Brodie Gaslam brodieG

View GitHub Profile
@brodieG
brodieG / setOldClassProbs.R
Last active August 29, 2015 14:04
Test setOldClass Issues
library(devtools)
install_github("pckgA", "brodieg") # defines old class "file" and class union "fileOrNULL" == c("file", "NULL")
install_github("pckgB", "brodieg") # defines old class "file", and nothing else
library(pckgA)
makeDummy() # from pckgA, instantiates a class with a "fileOrNULL" slot, placing a temp file S3 object in the slot
library(pckgB)
makeDummy() # this fails now
@brodieG
brodieG / data.table.standard.eval.R
Last active April 8, 2020 11:02
Corner Cases With Non-Standard Evaluation in data.table
# Because there is no way to tell data.table
# "interpret this variable as a column name", it's possible to come up
# with corner cases. I'll grant these are unlikely to occur in day
# to day use, but any function that uses `data.table` must account for
# them
# Low odds, and yes, there are workarounds, but this is
# what I mean by you have to think carefully to avoid
# corner cases
DT[
id %in% 200:300,
.(reg.val = sum(value)),
by=region
][
reg.val > 0,
range(reg.val)
]
@brodieG
brodieG / ensure_alike.R
Last active August 29, 2015 14:13
Using `alike` with `ensurer`
# Packages
library(devtools)
install_github("smbache/ensurer")
install_github("brodieg/alike")
library(ensurer)
library(alike)
library(magrittr)
set.seed(1)
list(system=c("browser",
"device",
"dvipscmd",
"mailer",
"pager",
"pdfviewer",
"pkgType",
"printcmd",
"HTTPUserAgent",
"texi2dvi",
@brodieG
brodieG / sample0110.R
Last active August 29, 2015 14:23
Code for SO Q: Random sample of character vector, without elements prefixing one another
sample0110 <- function(size, n, complete.only=FALSE) {
size <- as.integer(size)
n <- as.integer(n)
if(size > 25 || size < 3L) stop(
"Currently size min is 3 and max is 25, though should be possible to allow ",
"smaller and larger with some changes"
)
# Generate integer pool and weights
@brodieG
brodieG / bench0101.R
Last active August 29, 2015 14:23
Benchmarks for Random sampling from 01010 etc.
make_pool <- function(size)
sort(
unlist(
lapply(
seq_len(size),
function(x) do.call(paste0, expand.grid(rep(list(c('0', '1')), x)))
) ) )
system.time(pool4 <- make_pool(4))
@brodieG
brodieG / sample01101.R
Last active August 29, 2015 14:23
Random sampling from 01010 with some c implementations
sample01101 <- function(size, n, complete.only=FALSE) {
size <- as.integer(size)
n <- as.integer(n)
if(size > 25 || size < 3L) stop(
"Currently size min is 3 and max is 25, though should be possible to allow ",
"smaller and larger with some changes"
)
# Generate integer pool and weights
@brodieG
brodieG / sample0110b.R
Last active April 14, 2017 15:04
blind sample implementation variation
# http://stackoverflow.com/a/30781090/2725969
sample0110b <- function(size, n) {
size <- as.integer(size)
n <- as.integer(n)
if(size > 25 || size < 3L) stop("Size out of valid range")
# Generate integer pool and weights
@brodieG
brodieG / diff.R
Last active January 15, 2016 23:43
Playing with Diff
diff_rdiff <- function(target, current) {
stopifnot(is.character(target), is.character(current))
a <- tempfile("unitizerRdiffa")
writeLines(target, a)
b <- tempfile("unitizerRdiffb")
writeLines(current, b)
diff <- capture.output(system(paste("diff -bw", shQuote(a), shQuote(b))))
}
differ <- function(A, B) {