F# R Type Provider

The F# Type Provider is a mechanism that enables smooth interoperability between F# and R. The Type Provider discovers R packages that are available in your R installation and makes them available as .NET namespaces underneath the parent namespace RProvider.

The Type Provider makes it possible to use all of R capabilities, from the F# interactive environment. It enables on-the-fly charting and data analysis using R packages, with the added benefit of IntelliSense over R, and compile-time type-checking that the R functions you are using exist. It allows you to leverage all of .NET libraries, as well as F# unique capabilities to access and manipulate data from a wide variety of sources via Type Providers.

RProvider demo within an FSharp script

The above example is run through F# interactive (dotnet fsi).

A Quick Demo

What are R and F#?

F# is a multi-paradigm language that supports functional, object and imperative programming, with the emphasis on functional-first programming. F# runs on the .NET runtime and is a compiled, statically typed language with a strong type system and type inference. F# is a general purpose programming language, and is particularly well-suited for scientific/numerical computing.

R is an Open Source language for statistical computing. R offers a wide range of high-quality, community-developed packages, covering virtually every area of statistics, econometrics or machine learning. It is also famous for its charting capabilities, making it a great tool to produce publication-quality graphics. R is an interpreted, dynamically typed language that is typically used from its GUI, RStudio, or command line interactive environment.

Using the R Type Provider

RProvider is distributed as a nuget package. After setting up the pre-requisites (installing .NET 5+, R and setting the R_HOME environment variable, you can use as follows:

In an F# script:

#r "nuget:RProvider"

open RProvider

To add to a .NET project, from the terminal:

dotnet add package RProvider

Contributing and copyright

The project has been originally developed by BlueMountain Capital and contributors.

For compilation of the source, you will need F# 5.0 or later. For runtime you'll need .NET 5.

The project is hosted on GitHub where you can report issues, fork the project and submit pull requests.

namespace RProvider
Multiple items
namespace RProvider

--------------------
type RProvider = inherit TypeProviderForNamespaces new : cfg:TypeProviderConfig -> RProvider

--------------------
new : cfg:CompilerServices.TypeProviderConfig -> RProvider