fslaborg / RProvider

Access R packages from F#
http://fslab.org/RProvider/
Other
235 stars 69 forks source link

Error on atomic vectors $ operator #168

Closed jfrydendall closed 8 years ago

jfrydendall commented 8 years ago

I have tried to use the gam packages through the RProvider. I get the following error:

RDotNet.EvaluationException: Error: $ operator is invalid for atomic vectors

my code looks like this:

#load @"C:\Users\jafrd\Downloads\FsLab.Templates-basic\FsLab.Templates-basic\packages\FsLab\FsLab.fsx"

open RDotNet
open RProvider
open RProvider.graphics
open RProvider.stats
open RProvider.ISLR
open RProvider.datasets
open RProvider.``base``
open RProvider.gam
open Deedle

let wage : Frame<int, string> = R.Wage.GetValue()

let gam1 = R.gam(formula="wage~lo(year,age,span=0.5)+education",data=wage)

The code works just fine within R. How can I get this example to work?

jfrydendall commented 8 years ago

After having a look at the problem again I found out the issue is related to #135. According to the GAM manual the gam method is a S3 method.

I found this workaround based on the suggestions in #135:

#load "..\packages\FsLab\FsLab.fsx"

open RProvider
open RProvider.ISLR
open RProvider.datasets
open RProvider.``base``
open RProvider.gam

let df = R.wage

let formula = "gam(wage~lo(year,age,span=0.5)+education,data=df)"

let df = R.assign("df",df)
let gam_fit = R.eval(text="library(gam)"))

let gam_fit = R.eval(R.parse(text=formula))