F# R 提供程序 : Method not found: 'RDotNet. REngine RDotNet.REngine.GetInstance

标签 f#

我在 REPL 中使用 R 类型提供程序

#r "../packages/FSharp.Data.2.2.0/lib/net40/FSharp.Data.dll"
open FSharp.Data

[<Literal>]
let uri = "https://reddoggabtest-secondary.table.core.windows.net/TestTelemetryData0?tn=TestTelemetryData0&sv=2014-02-14&si=GabLab&sig=GGc%2BHEa9wJYDoOGNE3BhaAeduVOA4MH8Pgss5kWEIW4%3D"

type CarTelemetry = XmlProvider<uri>
let carTelemetry = CarTelemetry.Load(uri)

#r "C:/Program Files (x86)/Reference Assemblies/Microsoft/Framework/.NETFramework/v4.5.1/System.Xml.Linq.dll"
open System.Xml.Linq

carTelemetry.Entries |> Seq.iter(fun e -> printfn "%A" e.Title)

#I "../packages/RProvider.1.1.8/lib"
#r "../packages/R.NET.1.5.5/lib/net40/RDotNet.dll"
#r "../packages/R.NET.1.5.5/lib/net40/RDotNet.NativeLibrary.dll"
#r "../packages/R.NET.Community.FSharp.0.1.9/lib/net40/RDotNet.FSharp.dll"
#r "../packages/RProvider.1.1.8/lib/net40/RProvider.dll"
#r "../packages/RProvider.1.1.8/lib/net40/RProvider.Runtime.dll"

open System
open System.Net

open RDotNet
open RProvider
open RProvider.graphics
open RProvider.stats

carTelemetry.Entries |> Seq.map(fun e -> e.Content.Properties.Acceleration.Value)
                     |> R.log
                     |> R.diff

当我执行它时,我收到此异常

System.MissingMethodException: Method not found: 'RDotNet.REngine RDotNet.REngine.GetInstance(System.String, Boolean, RDotNet.StartupParameter, RDotNet.Devices.ICharacterDevice)'.
   at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7e2c2e0c1108171a1b0c5037100a1b0c101f12502c3710170a501b101917101b3e4f4f4a5037100811151b" rel="noreferrer noopener nofollow">[email protected]</a>()
   at System.Lazy`1.CreateValue()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Lazy`1.get_Value()
   at RProvider.RInteropInternal.toR(Object value) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 287
   at RProvider.RInterop.passArg@447(List`1 tempSymbols, Object arg) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 461
   at <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7c2e2c0e130a1518190e522e351208190e130c521d0e1b30150f083c484a44514d523b1912190e1d081932190408" rel="noreferrer noopener nofollow">[email protected]</a>(IEnumerable`1& next) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 475
   at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.MoveNextImpl()
   at Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.System-Collections-IEnumerator-MoveNext()
   at Microsoft.FSharp.Collections.SeqModule.ToArray[T](IEnumerable`1 source)
   at RProvider.RInterop.callFunc(String packageName, String funcName, IEnumerable`1 argsByName, Object[] varArgs) in c:\Tomas\Public\FSharp.RProvider\src\RProvider\RInterop.fs:line 466
   at <StartupCode$FSI_0012>.$FSI_0012.main@()
Stopped due to error

有什么想法吗?谢谢。

最佳答案

这看起来像是版本不匹配 - 您在 packages 文件夹中安装了哪个版本的 R.NET?

正确的(根据 latest R provider NuGet package 的要求)是:

  • R.NET.社区 (= 1.5.16)
  • R.NET.Community.FSharp (= 0.1.9)

请注意,还有(令人困惑的)更旧的 R.NET包(没有“社区”位)并将其放在 packages 中可能会让 R 提供者感到困惑。

顺便说一句:您还可以尝试使用 FsLab templates相反,这使得安装和加载所有内容的过程变得更加简单 - 将所有内容减少为一个 #load :-)

关于F# R 提供程序 : Method not found: 'RDotNet. REngine RDotNet.REngine.GetInstance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30043036/

相关文章:

list - F#:从列表中提取相同长度的重叠连续子列表

f# - 如何用条件实现 List Monad(计算表达式)?

f# - 如何使用方法在 F# 的默认构造函数中设置属性

f# - 这个 f# echo 服务器出了什么问题?

list - F#'s list is eager or lazy evaluated? Or only "seq"在 F# 中延迟求值

visual-studio - 分发基于 F# 的库

c# - Throttle - 最多每 N 毫秒调用一个函数?

F# 排列

f# - 如何在 `for .. in` 中对联合构造函数进行模式匹配

exception - F# 异常过滤器