The history
Cowsay is a terminal program that generates ascii pictures of a cow saying what you tell the cow to say in a bubble. See the Wikipedia page for more information: https://en.wikipedia.org/wiki/Cowsay - Install cowsay to use in your terminal (on OSX):
brew update
brew install cowsay
Type cowsay hello world!
, and you get:
______________
< hello world! >
--------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Optionally, you can install fortune to get pseudorandom messages from a database of quotations. On OSX do brew install fortune
, then you can pipe a fortune quote to cowsay
:
fortune | cowsay
And get something like:
______________________________________
/ "To take a significant step forward, \
| you must make a series of finite |
| improvements." -- Donald J. Atwood, |
\ General Motors /
--------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
You can also get different animals. Try cowsay -f tux <yourmessage>
Cowsay in R
Why cowsay for R? Why not. You never know what you will learn in fun side projects. Basically, this cowsay R package we are making prints messages that you pass to the function say
. There are three arguments to the say
function:
- what: What do you want to say? You can pass it a custom message, anything you want, like what’s up, or howdy!. You can also get R’s version of fortunes, quotes about R. Just pass the exact term forture. If you want a fact about cats from the Cat Facts API, pass in catfact. Last, you can get the current time by passing time to this parameter.
- by: Type of animal, one of cow, chicken, poop, cat, ant, pumpkin, ghost, spider, rabbit, pig, snowman, or frog. If you want more animals, send a pull request, or ask and at some point it will be added.
- type: One of message (default), warning, or string (returns string). You could use string to pass into other functions, etc., instead of printing a warning or message.
There are three other contributors so far (a big thanks to them):
- Tyler Rinker
- Thomas Leeper
- Noam Ross
Installation
library(devtools)
install_github("cowsay", "sckott")
library(cowsay)
p.s. or install_github("sckott/cowsay")
if you have a newer version of devtools
Get time
say("time")
-----
2014-02-20 14:15:35
------
\ ^__^
\ (oo)\ ________
(__)\ )\ /\
||------w|
|| ||
say("time", "chicken")
-----
2014-02-20 14:15:35
------
\
\
_
_/ }
`>' \
`| \
| /'-. .-.
\' ';`--' .'
\'. `'-./
'.`-..-;`
`;-..'
_| _|
/` /`
Vary type of output, default calls message
say("hello world")
-----
hello world
------
\ ^__^
\ (oo)\ ________
(__)\ )\ /\
||------w|
|| ||
say("hello world", type = "warning")
Warning:
-----
hello world
------
\ ^__^
\ (oo)\ ________
(__)\ )\ /\
||------w|
|| ||
say("hello world", type = "string")
[1] "\n ----- \n hello world \n ------ \n \\ ^__^ \n \\ (oo)\\ ________ \n (__)\\ )\\ /\\ \n ||------w|\n || ||"
Catfacts!!!!
From the catfacts API, we can get random cat facts. If you put in catfact you by default get a cat saying it.
say("catfact", "cat")
-----
Neutering a cat extends its life span by two or three years.
------
\
\
\`*-.
) _`-.
. : `. .
: _ '
; *` _. `*-._
`-.-' `-.
; ` `.
:. . \
.\ . : .-' .
' `+.; ; ' :
: ' | ; ;-.
; ' : :`-: _.`* ;
.*' / .*' ; .*`- +' `*'
`*-* `*-* `*-*'
R fortunes
say("fortune")
-----
If I were to be treated by a cure created by stepwise regression, I would prefer voodoo.
Dieter Menne
in a thread about regressions with many variables
R-help
October 2009
------
\ ^__^
\ (oo)\ ________
(__)\ )\ /\
||------w|
|| ||
say("fortune", "pig")
-----
Cross posting is sociopathic.
Roger Koenker
NA
R-help
November 2008
------
\
\
_//| .-~~~-.
_/oo } }-@
('')_ } |
`--'| { }--{ }
//_/ /_/
Incorporate into a function
Define a function
foo <- function(x) {
if (x < 5)
say("woops, x should be 5 or greater")
}
Call the function, with an error on purpose
foo(3)
-----
woops, x should be 5 or greater
------
\ ^__^
\ (oo)\ ________
(__)\ )\ /\
||------w|
|| ||
Or capture a warning or message and pass to the say
function
foo2 <- function(x) {
err <- tryCatch(x^2, error = function(e) e)
say(err$message, "frog")
}
Then call the function
foo2("hello")
-----
non-numeric argument to binary operator
------
\
\
(.)_(.)
_ ( _ ) _
/ \/`-----'\/ \
__\ ( ( ) ) /__
) /\ \._./ /\ (
)_/ /|\ /|\ \_(
Awesome. Much better to have an error message from a frog than just the harsh console alone :)