Skip to content

Instantly share code, notes, and snippets.

View brodieG's full-sized avatar

Brodie Gaslam brodieG

View GitHub Profile
@brodieG
brodieG / listcompare.R
Last active November 18, 2016 02:27
Compare diffobj vs. all.equal with nested list
list.A <- list(
list(a=1, b=2, c=matrix(1:9, 3)),
letters[1:16],
1:100,
head(warpbreaks, 3)
)
list.B <- list.A
list.B[[1]]$a <- list()
list.B[[1]]$c <- list.B[[1]]$c[-1, ]
list.B[[2]] <- LETTERS[1:16]
@brodieG
brodieG / browse.err.R
Last active October 18, 2016 01:36
Browser Bugs With on.exit
# Tested on OS X and Ubuntu R 3.3.1, appears fixed in R-devel
# WARNING: you may have to kill your session if you run the code here
fun <- function() {
on.exit(cat('exited\n'))
stop('hello')
}
{
browser()
# type `fun()` at Browser[1]> prompt to cause infinite loop
@brodieG
brodieG / gist:8eaccf0e1bb7cb2f60f1ecfcd26b473c
Last active August 22, 2016 01:44
Illustrate Connection Issues
f1 <- tempfile()
f2 <- tempfile()
cat("hello\n", file=f1)
cat("goodbye\n", file=f2)
con1 <- file(f1)
open(con1)
getAllConnections()
close(con1)
@brodieG
brodieG / optim.R
Created March 8, 2016 02:41
Demonstrate Some Optimizations to Crayon Substring
## Lightly edited for clarity
R version 3.2.2 (2015-08-14) -- "Fire Safety"
> install.packages("crayon")
trying URL 'http://cran.r-project.org/bin/macosx/mavericks/contrib/3.2/crayon_1.3.1.tgz'
Content type 'application/x-gzip' length 604079 bytes (589 KB)
==================================================
downloaded 589 KB
@brodieG
brodieG / membug.R
Created February 27, 2016 18:48
Demonstrate Crayon Binary Package Memoise Bug
ls(all=T)
# character(0)
install.packages("crayon")
# trying URL 'http://cran.r-project.org/bin/macosx/mavericks/contrib/3.2/crayon_1.3.1.tgz'
# Content type 'application/x-gzip' length 604079 bytes (589 KB)
# ==================================================
# downloaded 589 KB
#
#
# The downloaded binary packages are in
@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) {
@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 / 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 / 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 / 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