radian: A 21 century R console
radian is an alternative console for the R program with multiline editing and rich syntax highlight. One would consider radian as a ipython clone for R, though its design is more aligned to julia.
Features
- cross platform, runs on Windows, macOS and Linux
- shell mode: hit
;to enter and<backspace>to leave - reticulate python repl mode: hit
~to enter - improved R prompt and reticulate python prompt
- multiline editing
- syntax highlight
- auto completion (reticulate autocompletion depends on
jedi)
- unicode support
- latex completion
- auto matching parens/quotes.
- bracketed paste mode
- emacs/vi editing mode
- automatically adjust to terminal width
- read more than 4096 bytes per line
Installation
Requirements:
- An installation of R (version 3.4.0 or above) is required to use radian, an R installation binary for your system can be downloaded from https://cran.r-project.org.
pythonis also required to install radian. If your system doesn't come with a python distribution, it can be downloaded from https://conda.io/en/latest/miniconda.html. Python 2.7 or 3.5+ are supported, though 3.5+ are recommended.pipis optional but it makes the installation a bit easier.
# install released version
pip install -U radian
# to run radian
radian# or the development version
pip install -U git+https://github.com/randy3k/radianAlias on unix system
You could alias r to radian by putting
alias r="radian"in ~/.bash_profile such that r would open radian and R would still open the traditional R console.
(R is still useful, e.g, running R CMD BUILD.)
Settings
radian can be customized by specifying the below options in various locations
$XDG_CONFIG_HOME/radian/profileor$HOME/.config/radian/profile(Unix)%USERPROFILE%/radian/profile(Windows)$HOME/.radian_profile(Unix)%USERPROFILE%/.radian_profile(Windows).radian_profilein the working directory
The options could be also specified in the .Rprofile files, however,
it is not recommended because
- the settings are not persistent when vanilla mode is used;
- it doesn't work well with
packratorrenv.
# Do not copy the whole configuration, just specify what you need!
# see https://help.farbox.com/pygments.html
# for a list of supported color schemes, default scheme is "native"
options(radian.color_scheme = "native")
# either `"emacs"` (default) or `"vi"`.
options(radian.editing_mode = "emacs")
# indent continuation lines
# turn this off if you want to copy code without the extra indentation;
# but it leads to less elegent layout
options(radian.indent_lines = TRUE)
# auto match brackets and quotes
options(radian.auto_match = TRUE)
# disable the [prompt_toolkit](https://python-prompt-toolkit.readthedocs.io/en/master/index.html) [`auto_suggest` feature](https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion)
options(radian.auto_suggest = FALSE)
# highlight matching bracket
options(radian.highlight_matching_bracket = FALSE)
# auto indentation for new line and curly braces
options(radian.auto_indentation = TRUE)
options(radian.tab_size = 4)
# pop up completion while typing
options(radian.complete_while_typing = TRUE)
# the minimum length of prefix to trigger auto completions
options(radian.completion_prefix_length = 2)
# timeout in seconds to cancel completion if it takes too long
# set it to 0 to disable it
options(radian.completion_timeout = 0.05)
# add spaces around equals in function argument completion
options(radian.completion_adding_spaces_around_equals = TRUE)
# automatically adjust R buffer size based on terminal width
options(radian.auto_width = TRUE)
# insert new line between prompts
options(radian.insert_new_line = TRUE)
# where the global history is stored, environmental variables will be expanded
# note that "~" is expanded to %USERPROFILE% or %HOME% in Windows
options(radian.global_history_file = "~/.radian_history")
# the filename that local history is stored, this file would be used instead of
# `radian.global_history_file` if it exists in the current working directory
options(radian.local_history_file = ".radian_history")
# when using history search (ctrl-r/ctrl-s in emacs mode), do not show duplicate results
options(radian.history_search_no_duplicates = FALSE)
# ignore case in history search
options(radian.history_search_ignore_case = FALSE)
# custom prompt for different modes
options(radian.prompt = "\033[0;34mr$>\033[0m ")
options(radian.shell_prompt = "\033[0;31m#!>\033[0m ")
options(radian.browse_prompt = "\033[0;33mBrowse[{}]>\033[0m ")
# show vi mode state when radian.editing_mode is `vi`
options(radian.show_vi_mode_prompt = TRUE)
options(radian.vi_mode_prompt = "\033[0;34m[{}]\033[0m ")
# stderr color format
options(radian.stderr_format = "\033[0;31m{}\033[0m")
# force reticulate to use current python runtime
options(radian.force_reticulate_python = FALSE)
# enable reticulate prompt and trigger `~`
options(radian.enable_reticulate_prompt = TRUE)Custom key bindings
# allows user defined shortcuts, these keys should be escaped when send through the terminal.
# In the following example, `esc` + `-` sends `<-` and `esc` + `m` sends `%>%`.
# Note that in some terminals, you could mark `alt` as `escape` so you could use `alt` + `-` instead.
options(radian.escape_key_map = list(
list(key = "-", value = " <- "),
list(key = "m", value = " %>% ")
))FAQ
How to switch to a different R or specify the version of R.
There are serveral options.
- The easiest option is to pass the path to the R binary with
--r-binary, i.e.,radian --r-binary=/path/to/R - Also, one could expose the path to the R binary in the
PATHvariable - The environment variable
R_BINARYcould also be used to specify the path to R. - The environment variable
R_HOMEcould also be used to specify R home directory. Note that it is should be set as the result ofR.home(), not the directory whereRis located. For example, in Unix
$ env R_HOME=/usr/local/lib/R radianCannot find shared library
Please also make sure that R was installed with the R shared library libR.so or libR.dylib or libR.dll. On Linux, the flag --enable-R-shlib may be needed to install R from the source.
How to use local history file
radian maintains its own history file .radian_history and doesn't use the .Rhistory file. A local .radian_history is used if it is found in the launch directory. Otherwise, the global history file ~/.radian_history would be used. To override the default behavior, you could launch radian with the options: radian --local-history, radian --global-history or radian --no-history.
Does it slow down my R program?
radian only provides a frontend to the R program, the actual running eventloop is the same as that of the traditional R console. There is no performance sacrifice (or gain) while using this modern command line interface.
Nvim-R support
Put
let R_app = "radian"
let R_cmd = "R"
let R_hl_term = 0
let R_args = [] " if you had set any
let R_bracketed_paste = 1in your vim config.
reticulate Auto Completions
To enable reticulate prompt completions, make sure that jedi is installed.
pip install jediPrompt not shown inside a docker container
It maybe caused by the invalid terminal size, try running stty size in your terminal
to see if it returns a correct size. You could change the values of it from the environmental variables
$COLUMNS and $LINES when you log-in the docker container.
docker exec -it <container> bash -c "stty cols $COLUMNS rows $LINES && bash"
Why called radian?
radian is powered by (π)thon.
Credits
radian wouldn't be possible without the creative work prompt_toolkit by Jonathan Slenders.

