12/1/17

Are you playing Secret Santa? a R function

We’re playing Secret Santa in my family: you are giving a present to only one other person, and their identity is only known to you. You need to give them a handmade present or a present bought in a second-hand store. Well that last part is our own variation of the concept.

You might be playing Secret Santa in your lab.

Here is a little R function to sort the draw without anyone seeing the outcome, and without the need to involve an external participant. The only inputs are:

-a vector of names of participants; for example c(“Patrick”,”Nicole”,”Maria”,”Pablo”)

-the folder where you want the output files; for example “C:/Users/Maria/SecretSanta”

After you’ve run the function, send to each person the output file named after them.

The function:

secretsanta=function(names,directory){
chosen=names
for (i in 1:length(names)){
 if (names[i]%in% chosen){
 choice=sample(chosen[-which(chosen==names[i])],1)
 }else{
 choice=sample(chosen,1)
 }
 chosen=chosen[-which(chosen==choice)]
 write.table(paste(directory,"/",names[i],", you will give a present to ",choice,sep=""),
 file=paste(names[i],".txt",sep=""),quote=F,row.names=F,col.names=F)
 }
 return("Done! the files are in the provided directory. Merry Christmas.")
}

 

Load the function into R by entering the code above, and then run the function with your input:

secretsanta(names=c("Patrick","Nicole","Maria","Pablo"), directory="C:/Users/Maria/SecretSanta")

 

Merry Christmas!