Skip to content

Instantly share code, notes, and snippets.

Avatar
🎲
RAND()

Mikhail Popov bearloga

🎲
RAND()
View GitHub Profile
@bearloga
bearloga / Distributions.md
Last active Aug 29, 2015
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…
View Distributions.md

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 Feb 6, 2015
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.
View Embed Plot in HTML.R
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 Aug 29, 2015
Obtaining licensing metadata for task-specific R packages on CRAN (…for the purpose of, say, avoiding GPL-licensed packages)
View licenses.R
# 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 Aug 29, 2015
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."
View magic_8ball.R
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 Jun 5, 2015
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)
View Swimming.R
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.",
View 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 Dec 27, 2015
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…
View Parallel RJags with Progress Monitoring.R
# 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 Jan 9, 2014
This shows how to add a DataTables plug-in (in this case TableTools) to your Shiny app.
View tabletools.R
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 / Interactive_Presentations.Rmd
Created Dec 4, 2015
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.
View Interactive_Presentations.Rmd
---
title: "Interactive Presentations"
author: "Mikhail Popov (@bearloga)"
date: "December 4, 2015"
output: ioslides_presentation
runtime: shiny
---
## Reduce Demo
@bearloga
bearloga / follower_bios.R
Last active Feb 23, 2016
Scrapes some basic info from my Twitter followers' bios. I used this to get an approximate lower bound on how many data science-y folks follow me.
View follower_bios.R
your_handle <- "bearloga"
# Note: must be logged in to twitter to view your own or anyone's list of followers
library(magrittr) # install.packages('magrittr')
library(rvest) # install.packages('rvest')
library(RSelenium) # install.packages('RSelenium')
# Scrolling solution by NicE (http://stackoverflow.com/a/29965233/1091835):
checkForServer()
startServer()