Suggestions for Making Your R Code Spookier

By Max Candocia

|

October 25, 2017

The air is getting colder, and sometimes you just want to add some pizzazz to your R code. Here are some tips for making it spookier this frightful season.

  1. Display your code using a black-and-orange font
    message <- 'Happy Halloween!'
    print(message)
    
    ## [1] "Happy Halloween!"
    
  2. Use the numbers 13 and 666 in your code when an arbitrary constant would do
    set.seed(13*666)
    
  3. Make aliases for common functions or values using spooky words
      scare <- split
      wearing <- 13
      a <- 3
      at <- 13
      children <- rnorm
      night <- factor
      mask <- 0.5
      with.a.knife <- rbinom
      #final result
      scare(children(at), night(with.a.knife(wearing,a,mask)))
    
    ## $`0`
    ## [1] -0.63227650  0.25124949  0.02002853
    ## 
    ## $`1`
    ## [1]  1.0604516 -0.8714481 -1.5192590 -0.1055185
    ## 
    ## $`2`
    ## [1] -0.3264258 -0.2820896 -1.3271632
    ## 
    ## $`3`
    ## [1] 0.6829790 0.2338166 0.7319324
    
  4. Even better, give people nightmares by using non-ASCII characters
    BÓO <- print
    BOOÓ  <- 'sp00ky'
    BØO <- paste0
    BØØ <- 4
    BØØØ <- 'me'
    #final result
    BÓO(BØO((BØØ+BØØ)/BØØ,BOOÓ,BØØ,BØØØ))
    
    ## [1] "2sp00ky4me"
    
  5. Secretly and silently assign aliases as global variables
    begin.haunting <- function(){eval(parse(text=paste(paste(letters[c(19,3,1,18,5)], collapse=''),'<<-','scale')))}
    begin.haunting()
    scare(children(wearing,a,mask))
    
    ##               [,1]
    ##  [1,]  1.593613953
    ##  [2,] -1.731931186
    ##  [3,]  0.399275593
    ##  [4,]  1.539873180
    ##  [5,] -0.777245280
    ##  [6,] -0.414935945
    ##  [7,] -0.418567316
    ##  [8,] -0.347359526
    ##  [9,]  0.374395222
    ## [10,]  0.472213043
    ## [11,]  0.007651959
    ## [12,]  0.712623270
    ## [13,] -1.409606969
    ## attr(,"scaled:center")
    ## [1] 2.950584
    ## attr(,"scaled:scale")
    ## [1] 0.4758116
    
  6. Combine all of these into obfuscated functions that produces non-iid random, complex variables, and then build a model using the real and imaginary components
    sp00ky <- function(reality, nightmare=0) complex(real=reality, imaginary=nightmare)
    BÓOÓO <- function(x, ...){eval(parse(text=paste0('BÓØ',x,'<<-',letters[1],letters[19],'sign')))}
    BÓOOÓO <- function(x, ...) ifelse(1:length(x) %% 2 == 1, BÓOÓ(x, ...), BOOÓ(x, ...))
    BÓOÓ <- function(x, ...) ifelse(x %% 2 ==1, 0, x)
    BOOÓ <- function(x, ...) ifelse(x %% 2 ==0, 0, x)
    BÓÓÓ <- function(x, ...) sp00ky(reality=BÓOOÓO(x), nightmare=sp00ky(reality=x)-BÓOOÓO(x))
    BÓÓOÓO <- function(x, ...) BØØØ(x)^2
    BÓØÓØ <- function(x) rep(1, length(x))
    BÓØ <- function(x, ...) ifelse(BÓØÓØ(x) * length(unique(x))==1, rep(0, length(x)), scale(x))
    BØØÓ <- function(x, ...){Ó = pmax(1e-12, abs(x)); sp00ky(reality=BÓØ(Re(x/Ó)), nightmare=BÓØ(Im(x/Ó)))}
    BØØØ  <- function(x, Ø, ...) {BÓØØ('ØØ',  BÓÓÓ(x) - sp00ky(reality=Ø)); BØØÓ(ØØ)}
    BØO <- function(x, a, r) {BÓØØ('n', length(x)); x[max(1,a-r):min(n,a+r)]}
    BØOO <- function(x, a, r, ...) {s = BØO(x, a, r, ...); y = ØO(1:length(x), a, r)-a; w=exp(-y^2/(2*r)); sum(s*w)/sum(w)}
    BØØO <- function(x, r, ...) {BÓØØ('n', length(x));m = numeric(n); for(a in 1:n){m[a] = BØOO(x, a, r) }; m}
    BÓØÓ <- function(x, r=3, v=1, ...) BØØO(BØØØ(x, ...)/BØØÓ(BÓÓÓ(x)), v)
    BÓOÓO('Ø')
    
    set.seed(13*666)
    i = rpois(2*13*13, 13)
    Ø = 13
    ÓÓ = BÓØÓ(i, Ø=Ø, v=Ø)
    sp00ky.df = data.frame(=Re(ÓÓ), BØØ=Im(ÓÓ))
    sp00ky.model = lm(BØØ ~ BØ, data=sp00ky.df)
    
    par(bg='black',col='orange',fg='orange',col.axis='orange',col.main='orange',col.lab='orange')
    plot(sp00ky.model$residuals, type='l',ylab='residual error', xlab='index', main='Residuals of Model Based on non-IID Variables')
    
    plot of chunk spooky5_image

Tags: 

Recommended Articles

What Age do Kids Start Going Trick-or-Treating, and When do They Stop?

When do kids start going trick or treating, and when are they "too cool" to continue going? Using survey data and a variety of statistical techniques, answers to these questions can be found to a certain level of statistical confidence.

Modeling Heart Rate Recovery with Nonlinear Regression

Nonlinear regression models can succeed where linear models fail and highly complex models cannot be interpreted. Using heart rate data I collected from my runs, I demonstrate how my heart rate recovers after stopping as a function of temperature and rest time.