Skip to content

fslaborg/RProvider

Repository files navigation

F# R Provider

Discord

RProvider

An F# type provider for interoperating with R. For more information, see detailed documentation with tutorials, examples and more. The following tutorials are a good place to start:

The R Provider discovers R packages that are available in your R installation and makes them available as .NET namespaces underneath the parent namespace RProvider. For example, the stats package is available as RProvider.stats. If you open the namespaces you want to use, functions and values will be available as R.name.


Builds

GitHub Actions
Github Actions

NuGet

Package Stable Prerelease
RProvider NuGet Badge NuGet Badge

Requirements

Make sure the following requirements are installed on your system:

  • dotnet SDK 5.0 or greater; and
  • R statistical language. Note: on Windows, there is currently a bug in R preventing us from supporting R versions greater than 4.0.2.
  • R_HOME environment variable set to the R home directory. This can usually be identified by running the command 'R RHOME'.

Note: for .NET framework support, you should use the legacy RProvider 1.2 or earlier; we are no longer supporting these versions.

What does it do?

The R Provider discovers R packages that are available in your R installation and makes them available as .NET namespaces underneath the parent namespace RProvider. For example, the stats package is available as RProvider.stats. If you open the namespaces you want to use, functions and values will be available as R.name. For example, consider this F# interactive script:

#r "nuget:RProvider"

open RProvider
open RProvider.``base``

let v = R.c(1,2,3)

This creates an R numeric vector containing 1,2,3, and names it v. Note that we had to open the base namespace, since the function 'c' is part of that namespace. You should also open namespace RProvider, because it contains some helper functions. As type providers are used by Visual Studio and other IDEs, you will get intellisense for R functions. You will also get compile-time type-checking that the function exists.

Note that you can set the version of RProvider to use (for reproducability) by changing the #r line to:

#r "nuget:RProvider,2.0.3" //replace 2.0.3 with desired version

How to use

RProvider is distributed as a NuGet package, which can be used from an F# script or F# projects. See our documentation for more detailed information and tutorials.

If you are using R 2.15 or later, you should not try to load the RProvider inside a script that is passed to FSI via the --use flag. It seems that something about the way R initializes causes it to hang in that context. Works fine if you load later.

Developing

Install the requirements listed in the above section. To build and test:

  1. Restore dotnet tools: dotnet tool restore
  2. Run FAKE: dotnet fake build -t All

To debug, enable logging by setting the RPROVIDER_LOG environment value to an existing text file.

License

RProvider is covered by the BSD license.

The library uses RDotNet which is also covered by the BSD license.

Maintainers