To use boxr, you need to enable API access for your box.com account. The process is slightly annoying. You only need to do it once - it takes around 2 minutes.
At https://app.box.com/developers, click 'My Apps' in the top right-hand corner, log in, and create a new 'app' for your box.com account. You can call it anything you like. This won't do anything remotely like creating an app, but it does allow you to access your account via the API.
On the next screen, you'll want to set Content API Access Only, and
http://localhost as your redirect_uri as in the screenshot below.
This means passing your client_id and client_secret to the
box_auth function. These strings are not enough for someone to access your account maliciously. However, it's still a good idea to keep them safe, and out of any files or code which might be shared with others.
And paste/type the
client_secret when prompted. If these are valid, a browser window should open, for you to formally grant yourself access to your files at box.com.
box_auth() worked successfully, you won't need to do any of this again, and thanks to the magic of
httr everything should just work. Your client_id and client_secret will be securely stored in your R environment variables, your hashed OAuth2.0 token will stored at
~/.boxr-oauth, .gitignore'd if necessary, and automatically refreshed when needed.
Aside from file upload/download, boxr provides functions which mirror base R operations for local files.
box_ul(file = 'path/to/file')to download and upload files respectively
box_save()for remote R workspaces
box_read()to read files straight into R (e.g. .csv or .xlsx files as
box_getwd()to get/set a default box folder
box_source()to read and execute remote code
box_write()to write R objects the remotely hosted files
box_search()to query files stored on box.com
box_add_description()add text descriptions to your files on box.com
Cloud storage services can complement version control systems for code, which aren't well suited to large binary files (e.g. databases, .RData, or heaps of pdfs). box explicitly versions binary files, keeping old ones, and making it easy fall back to an older copy.
boxr provides git style facilities to upload, download, and synchronize the contents of entire local and remote directories. At the time of writing, the box.com API does not support this directly, and so boxr recursively loops through directory structures.
box_pushwill update the remote directory with new/changed local files
box_fetchwill update the local directory with new/changed remote files
These functions all have
delete parameters, which are set to
FALSE by default.
Disclaimer: box.com is no replacement for a VCS/remote-database, and familiar verbs are no guarantee of expected behavior! Do check the function documentation before jumping in.
boxr's functions have been designed to be 'pipable'. Here's a little example:
library(boxr) library(dplyr) library(magrittr) # 'nycflights13.json' is the same as nycflights13::flights, if you want to # follow along at home box_auth() box_search("nycflights13.json") %>% # Find a remote file box_read() %>% # Download it as a data.frame group_by(origin, dest, month) %>% # Do some, er, cutting edge summarise(mu = mean(arr_delay), n = n()) %>% # analysis with dplyr! box_write("delay_summary.xlsx") %>% # Convert to .xlsx, upload box_add_description("Check out these averages!") # Add a description to your file!
Are how box.com identifies things. You can find them in an item's URL:
boxr is by default rather verbose, printing status to the console with
cat. This is 'rude' package behaviour, and may cause unwanted output if used in conjunction with the excellent
To supress messages produced using
cat, set boxr's verbose option with:
options(boxr.verbose = FALSE)
boxr aims to expedite data analysis/communication/distribution. Other ways to manipulate a box.com account include:
If you don't like the idea of typing credentials into your console, you can put them straight into
~/.Renviron yourself, prior to the R session:
(Note the final blank line).
boxr is a realtively new package. If you find anything that looks like a bug while using it, please report it!
The best way to do this is via a GitHub issue, at: https://github.com/brendan-R/boxr/issues
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.