Now and then I’ll be away from home on the subway or something when I think about a quick function call I want to test in R, or a line of code I want to tweak. I have sometimes logged in to my RStudio Server instance, but the interface is next to impossible to use on a cell phone. Instead of accessing R from my phone, the solution was to access R on my phone. The instructions here will help you get set up with an IDE-like R experience on Android.
To give credit where credit is due, some commands below were suggested in this issue on the Termux packages GitHub repo.
Step 1: Installing Termux
Termux forms the basis of this little project. It is a terminal emulator for Android, with a Linux environment and package management tools. Get it on Google Play here.
Step 2: Add the pointless package repository
GitHub user its-pointless maintains a repository of packages for Termux, including the ones we’ll need to install R. Enter the commands below to add their repository to your Termux install.
pkg install curl gnupg mkdir -p "$PREFIX/etc/apt/sources.list.d/" echo "deb https://its-pointless.github.io/files/ termux extras" > "$PREFIX/etc/apt/sources.list.d/pointless.list" curl "https://its-pointless.github.io/pointless.gpg" | apt-key add
Step 3: Install required
The following series of packages will give you a fully-functioning R environment, including the ability to install R packages from CRAN.
pkg install r-base \ make \ clang \ gcc-7 \ libgfortran \ openssl-dev \ libcurl-dev \ libicu-dev \ libxml2-dev
You will need to configure your compiler. its-pointless provides a handy script for this. Just run
Step 4: Install R packages
Now you’re ready to install your packages. First launch R by typing an uppercase R:
From within R, use the
install.packages() function to install the packages of your choice. For instance, if you are a tidyverse user, you can run:
Note, the above install takes a long time. You may prefer to install individual packages instead of the whole tidyverse bundle … really, how many knitr documents do you plan to write on your phone?
Step 5: Adding an IDE
If you are happy to use R from the R console, then you can skip this step. If you, like me, prefer to have a bit more control to run lines and see the objects in your environment, then you can get something akin to the RStudio experience (console-based of course) using Neovim and the Nvim-R plugin.
To get started, install Neovim.
pkg install neovim
You can find the latest version of Nvim-R here. Take a note of the URL for the latest release. You can download this directly to your Termux environment via cURL as follows:
curl -L "https://www.vim.org/scripts/download_script.php?src_id=26185" > NvimR.vmb
In an effort to future-proof this post, you can download the newest version automatically with this (rough) grep hack (YMMV):
latestver=$(curl -sNL "https://www.vim.org/scripts/script.php?script_id=2628" | grep -m1 "download_script.php" | grep -Eo "[0-9]+") curl -L "https://www.vim.org/scripts/download_script.php?src_id=$latestver" > NvimR.vmb
You have now saved the Nvim-R plugin in a file in the current directory, but it is not installed yet. To install, launch Neovim and open the
nvim, type the following two commands:
:packadd vimball :so %
You will see a list of files installed. Hit space until you reach the end of the output. You can now quit via
Step 6: Profit
There is a pretty steep learning curve to using Neovim and I’ll admit that I’m still just getting started. The following will give you a few tips to get your feet wet. For more detailed instructions, see the Nvim-R documentation.
You can open a new R file in Neovim by typing the following:
You should now find yourself within Neovim. Fire up an R instance by typing
\rf and wait for it to initialize.
You can open the object browser via
\ro. This will give you a layout that looks a little like RStudio.
You can tap between the console and the edit area. To insert text, type i. When you are done typing, hit Esc. Run a line by
Note: To insert an underscore, type _ twice. One is turned to
And there you have it. Good luck coding in R from your phone!