randy3k
radian
Python

A 21 century R console

Last updated Jul 5, 2026
2.3k
Stars
87
Forks
210
Issues
0
Stars/day
Attention Score
95
Language breakdown
No language data available.
โ–ธ Files click to expand
README

radian: A 21 century R console

Important

radian is no longer under active development. While I may address critical or obvious bugs, no new features will be added. If you are looking for an active alternative, I recommend checking out arf by @eitsupi.


Main codecov Conda version

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 .
  • python (version 3.8 or above) is also required to install radian. If your system doesn't come with a python distribution, it can be downloaded from .
  • Installing radian via pipx would be the easiest option.
# install released version
pipx install radian

or the dev version

pipx install git+https://github.com/randy3k/radian

to run radian

radian

Alias on unix system

You could alias r to radian by putting

alias r="radian"

in ~/.bashprofile 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

  • $XDGCONFIGHOME/radian/profile or $HOME/.config/radian/profile (Unix)
  • %USERPROFILE%/radian/profile (Windows)
  • $HOME/.radian_profile (Unix)
  • %USERPROFILE%/.radian_profile (Windows)
  • .radian_profile in 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 packrat or renv.
# Do not copy the whole configuration, just specify what you need!

see https://pygments.org/styles

for a list of supported color schemes, default scheme is "native"

options(radian.color_scheme = "native")

either &quot;emacs&quot; (default) or &quot;vi&quot;.

options(radian.editing_mode = "emacs")

enable various emacs bindings in vi insert mode

options(radian.emacsbindingsinviinsert_mode = FALSE)

show vi mode state when radian.editing_mode is vi

options(radian.showvimode_prompt = TRUE) options(radian.vimodeprompt = "\033[0;34m[{}]\0330m ")

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)

enable the [prompttoolkit auto_suggest feature

this option is experimental and is known to break python prompt, use it with caution

options(radian.auto_suggest = FALSE)

highlight matching bracket

options(radian.highlightmatchingbracket = 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.completewhiletyping = TRUE)

the minimum length of prefix to trigger auto completions

options(radian.completionprefixlength = 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.completionaddingspacesaroundequals = TRUE)

automatically adjust R buffer size based on terminal width

options(radian.auto_width = TRUE)

insert new line between prompts

options(radian.insertnewline = TRUE)

max number of history records

options(radian.history_size = 20000)

where the global history is stored, environmental variables will be expanded

note that "~" is expanded to %USERPROFILE% or %HOME% in Windows

options(radian.globalhistoryfile = "~/.radian_history")

the filename that local history is stored, this file would be used instead of

radian.globalhistoryfile if it exists in the current working directory

options(radian.localhistoryfile = ".radian_history")

when using history search (ctrl-r/ctrl-s in emacs mode), do not show duplicate results

options(radian.historysearchno_duplicates = FALSE)

ignore case in history search

options(radian.historysearchignore_case = FALSE)

do not save debug browser commands such as Q in history

options(radian.historyignorebrowser_commands = TRUE)

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 ")

stderr color format

options(radian.stderr_format = "\033[0;31m{}\033[0m")

enable reticulate prompt and trigger ~

options(radian.enablereticulateprompt = TRUE)

Custom key bindings

# allows user defined shortcuts, these keys should be escaped when send through the terminal.

In the following example, esc + - sends &lt;- and ctrl + right sends %&gt;%.

Note that in some terminals, you could mark alt as escape so you could use alt + - instead.

Also, note that some ctrl mappings are reserved. You cannot remap m, i, h, d, or c

options( radian.escapekeymap = list( list(key = "-", value = " <- "), ), radian.ctrlkeymap = list( list(key = "right", value = " %>% ") ) )

FAQ

Unicode doesn't work in Windows and R 4.2+

The latest version of R supports Unicode codepage directly. However, radian relies on Python and Python doesn't support Unicode in the way that R supports it. A workaround could be found here: . Though it may break the ploting device (running plot() will kill radian).

I can't specify python runtime in reticulate

It is expected. radian runs on python and the python runtime used by radian is forced in reticulate. reticulate::py_config() gives the note:

NOTE: Python version was forced by the current process

In order to use radian with another python runtime, you will need to install radian on that python environment.

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 PATH variable
  • The environment variable R_BINARY could also be used to specify the path to R.
  • The environment variable R_HOME could also be used to specify R home directory. Note that it is should be set as the result of R.home(), not the directory where R is located. For example, in Unix
env R_HOME=/usr/local/lib/R radian

Cannot 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 configure flag ./configure --enable-R-shlib may be needed to install R from the source. Do not forget to make clean to force the recompilation of the files with the correct compiler options.

Outdated setuptools

If you encounter

The package setup script has attempted to modify files on your system that are not within the EasyInstall build area.

Please update your setuptools by

pip install -U setuptools

How to use local history file

radian maintains its own history file .radianhistory and doesn't use the .Rhistory file. A local .radianhistory is used if it is found in the launch directory. Otherwise, the global history file ~/.radianhistory 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.

However, it was reported that radian may be slower when using parallel computation, specifially when using forking. User should take extra care in those cases.

Nvim-R support

Put

let R_app = "radian"
let R_cmd = "R"
let Rhlterm = 0
let R_args = []  " if you had set any
let Rbracketedpaste = 1

in your vim config.

reticulate Auto Completions

To enable reticulate prompt completions, make sure that jedi is installed.

pip install jedi

Alternatively, if you use conda,

conda install -c conda-forge jedi

Prompt 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 prompttoolkit by Jonathan Slenders.

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท randy3k/radian ยท Updated daily from GitHub