Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Build Status cran license downloads

r fun(ction): attempt to make a fun cli for R

A small utility which wraps Rscript and provides easy access to all R functions from the terminal.


This aims to provide an easy command-line interface to all R functions.

Usage: funr [-h -v] <name of a function> <arguments to the function [<options>=<value>]>

funr -h            Show this help
funr -h <function> Show help for a specific function
funr -v            Show extra verbose messages for debugging this package
funr <func>        Find and run <function>
funr <func> [args] Run <func> with supplied [arguments]
funr <pkg::func>   Load the package <pkg>, and then run <func>


Using a base package

## load help for rnorm
funr -h rnorm
    Normal                  package:stats                  R Documentation
    The Normal Distribution
       Density, distribution function, quantile function and random

## sample 10 numbers from a normal distribution
funr rnorm n=10
    -1.244571 1.378112 0.02189023 -0.3723951 0.282709 -0.22854 -0.8476185 0.3222024 0.08937781 -0.4985827

Using a non-base package Load a package automatically by ::

## load help file for knitr
funr -h knitr::knit
    knit                   package:knitr                   R Documentation
    Knit a document
       This function takes an input file, extracts the R code in it
       according to a list of patterns, evaluates the code and writes the
       output in another file. It can also tangle R source code from the

Knit a HTML file using a example R markdown input from knitr package:

## get path to an example Rmd file (assuming you have knitr installed).
## pipe the file path, to a subsequent funr command (for version >0.1.2)
funr system.file package=knitr fl=examples/knitr-minimal.Rmd | funr knitr::knit2html input=-
    loading pkg: knitr
    processing file: ... knitr/examples/knitr-minimal.Rmd
    output file:

Adding funr to your scripts

For example, create a file (norm.r), similat to the following.

#!/usr/bin/env Rscript

# define your functions
norm_hist <- function(n){
  x = rnorm(n)

out = funr(commandArgs(trailingOnly = TRUE))

Basic components include 1) shebang line (#!/usr/bin/env Rscript), so that shell knows that this is a Rscript, 2) definition of the function you would like to call 3) passing cmd arguments to funr.

Following this, add execution privilige to the script using:

chmod ugo+rx norm.r

Now, one may call the function:

norm.r norm_hist n=100

# OR (is you prefer)
Rscript norm.r norm_hist n=100

Using devtools from terminal

Building up on the example above, we can wrap an entire R package, and use help text to show a few examples.

Here is an example, for wrapping devtools:

## download custom funr script
wget -O ~/bin/devtools

## installing a repo from github
devtools install_github repo="sahilseth/flowr"

## cd into a pacakge you want to check and run
devtools check .

## cd into a pacakge you want to build and run
devtools build .

Along the same lines here is another example for package flowr:


  • Fetch all named parameters of the function and supply shell arguments after converting to the correct type.
    • detects argument type from the function call
      • convert to 1. logical, 2. integer or 3. numeric etc.
  • load help files, providing easy access to R man pages (using -h).
  • Automatically load any package and use any of its exported functions (via funr pkg::func)


This package is under active-development, you may watch for changes using the watch link above.


automatically placed in your bin, and updated when the package gets updated

## a stable version

## OR a latest developmental version

## setup
    A small script funr has been copied to ~/bin.
    Consider adding ~/bin to your PATH variable, by running this:
    echo 'export PATH=$PATH:~/bin' >> ~/.bashrc
    After opening a new shell session, running funr from the shell should work

To be able to run this utility without the need to use the full path, you need to add the folder containing the funr script to your PATH variable. The setup function copies a shortcut to this script to the ~/bin folder. Then you would need to add ~/bin to your PATH variable. You may do this using this command:

echo 'export PATH=$PATH:~/bin' >> ~/.bashrc

Alternatively, you may copy a shortcut to the funr script to any of the following folders on a linux/mac machine.

## Usually Unix based systems already contain these folders in the PATH variable:

## Assuming /usr/local/bin is already in the path variable (check using echo $PATH),
## this might be a good place to install funr. 
## This would make it accesible to ALL users of the machine/server

## get path to the funr script
Rscript -e 'system.file("scripts/funr", package="funr")' ## get the path from this command:

## create a shortcut to the scruot
ln -s /Library/Frameworks/R.framework/Versions/3.2/Resources/library/funr/scripts/funr /usr/local/bin/


Simple Utility providing Shell Access to all R Functions







No packages published