Skip to content

Instantly share code, notes, and snippets.

View bearloga's full-sized avatar
🎲
RAND()

Mikhail Popov bearloga

🎲
RAND()
View GitHub Profile
@bearloga
bearloga / notify.R
Last active December 26, 2015 18:49 — forked from hrbrmstr/notify.R
notify <- function(msg="Operation complete") {
in.osx <- (Sys.info()['sysname'] == "Darwin")
in.rstudio <- (Sys.getenv("RSTUDIO") == "1")
in.rgui <- (Sys.getenv("R_GUI_APP_REVISION") != "")
if (in.rstudio) { # hack to see if running in RStudio
title <- "RStudio"
sender <- activate <- "org.rstudio.RStudio"
}
@bearloga
bearloga / Parallel RJags with Progress Monitoring.R
Last active December 27, 2015 04:58
par.trace.samples() runs independent MCMC chains in parallel on a multicore/multiCPU system. It breaks up a single long run into several smaller chunks and that allows it to report the simulation's progress. At the end of the run, all the chunks are combined into a single mcmc object. The mcmc objects from the chains are then combined into a sin…
# This file contains two functions:
# - combine.samples (used by par.trace.samples)
# - par.trace.samples
# and an example at the bottom.
## Author: Mikhail Popov (mikhail [at] mpopov.com)
# install.packages("rjags") # JAGS must be installed on system
# install.packages("doMC") # Unix only
@bearloga
bearloga / tabletools.R
Created January 9, 2014 00:40
This shows how to add a DataTables plug-in (in this case TableTools) to your Shiny app.
library(shiny)
library(ggplot2)
# Download DataTables JS file and TableTools full package from http://datatables.net/download/
# Change the paths appropriately:
addResourcePath('datatables','/Users/yourusername/Downloads/DataTables-1.9.4/media')
addResourcePath('tabletools','/Users/yourusername/Downloads/TableTools-2.1.5/media')
runApp(list(
ui = basicPage(
@bearloga
bearloga / Distributions.md
Last active August 29, 2015 14:14
During the character creation process in Dungeons & Dragons (D&D), if one chooses to roll for their attributes (dexterity, charisma, constitution, wisdom, intelligence, strength), they must roll 4 6-sided dice 6 times, each time taking the total of the top three dice with the highest outcomes. This is a simulation study (N=10,000) using R of dis…

Dice Distribution

Dice Combination Proportion
14, 13, 12, 11, 10, 9 0.0015
16, 15, 14, 13, 12, 11 0.0015
15, 14, 13, 12, 10, 9 0.0014
16, 15, 14, 13, 11, 10 0.0014
14, 13, 13, 12, 11, 10 0.0013
15, 14, 13, 12, 12, 11 0.0013
@bearloga
bearloga / Embed Plot in HTML.R
Created February 6, 2015 20:33
Sometimes you just want to send a report to someone as a single HTML file (e.g. when PDF isn't an option) and you want to avoid the hassle of external images. This code lets you convert a plot in R into base64 string that you can include in the HTML source.
library(base64) # install.packages('base64')
pngfile <- tempfile()
png(pngfile,width=600,height=600,pointsize=12) # adjust as needed
# Plotting code...
dev.off()
# Prints the HTML code to console
cat(img(pngfile))
# Copy and paste the whole output into your HTML source to embed the image
@bearloga
bearloga / licenses.R
Last active August 29, 2015 14:19
Obtaining licensing metadata for task-specific R packages on CRAN (…for the purpose of, say, avoiding GPL-licensed packages)
# devtools::install_github("RcppCore/Rcpp")
# devtools::install_github("hadley/xml2")
# devtools::install_github("hadley/rvest")
# devtools::install_github("metacran/crandb")
# devtools::install_github('ironholds/practice')
# install.packages('dplyr')
library(rvest); library(crandb)
get_licensing_for_task <- function(task_url) {
@bearloga
bearloga / magic_8ball.R
Last active August 29, 2015 14:20
For Oliver Keyes (@Quominus) who tweeted that he "would like a magic 8-ball only instead of the future it tells [him] if [he's] being insecure and/or nuts."
library(shape) # install.packages('shape')
magic_8ball <- function(x = c("yes","no")) {
greys <- greycol(50, interval = c(0, 1))
colours <- shadepalette("#000079", "blue", n = 20)
emptyplot(xlim = c(-5, 5), ylim = c(-5, 5), col = "white", frame.plot = FALSE)
filledellipse(rx1 = 4.9, ry1 = 4.9, col = "black")
filledellipse(rx1 = 2, ry1 = 3.5, col = greys[2:50], angle = -45, dr = .1, mid = c(-2, 2))
filledellipse(rx1 = 0.25, ry1 = 0.25, col = "white", mid = c(-2, 2))
filledellipse(rx1 = 2.8, ry1 = 2.8, col = "white")
@bearloga
bearloga / Swimming.R
Created June 5, 2015 18:16
To answer the question "Does time saved by swimming better make up for time spent panickedly taking off pants?" (https://twitter.com/R0mination/status/606874583283597312)
d <- 20
time_pants <- 15 # seconds
# Average human swimming speed: 2 miles per hour
speed_avg <- birk::conv_unit(2, "mph", "m_per_sec") # install.packages('birk')
perc <- seq(0.25, 0.95, 0.01)
speed_slow <- speed_avg * perc
plot(perc * 100, (d / speed_slow)/60, type = "l", las = 1, lwd = 2,
xlab = "Speed in pants as % of average speed (2 mph ~ 0.89 m/s). In other words, how much the pants slow you down.",
@bearloga
bearloga / classify.R
Created September 10, 2015 19:27
A function which launches a Shiny app for hand coding (manually classifying) data.
#' Manual classification of observations
#'
#' \code{classify} launches a Shiny app to manually classify a subset of observations.
#'
#' @param x A character vector.
#' @param btn_labels A character vector of length 2 corresponding to 0 and 1.
#' @return A vector of 0/1 for each element in \code{x}.
#' @export
#' @examples \dontrun{
#' foo <- sprintf('%s (%.2f miles per gallon)', rownames(mtcars), mtcars$mpg)
@bearloga
bearloga / Interactive_Presentations.Rmd
Created December 4, 2015 19:32
This allows the presenter to write and execute R code within the presentation without going back and forth between the presentation and the R console.
---
title: "Interactive Presentations"
author: "Mikhail Popov (@bearloga)"
date: "December 4, 2015"
output: ioslides_presentation
runtime: shiny
---
## Reduce Demo