#r "RProvider.dll"
open RProvider
open RProvider.``base``
let add (x: float) (y: float) =
let sum = R.sum(x,y)
sum.Value
VS给我错误“字段,构造函数或成员'值'未定义”
我也尝试将矢量传递给R.sum
来自现有的小文档(https://github.com/BlueMountainCapital/FSharpRProvider/wiki/How-To)我无法想象该怎么做
答案 0 :(得分:1)
使用R.sum
函数似乎有点难看,因为它需要可变数量的参数并对所有参数求和(因此R类型提供程序无法推断它所期望的参数)。
要获得结果,您需要一些扩展方法:
open RDotNet
调用这样的函数有两个选项 - 你可以给它一个参数(不指定它们的名字),这对R.sum
来说效果很好:
// You can pass parameters as an explicit array
R.sum([| 2.0; 3.0 |]).AsNumeric() |> Seq.head
// Or you can use the fact that the function takes 'params' array
R.sum(1.0, 2.0).AsNumeric() |> Seq.head
如果要指定参数的名称(这里不是真的需要,但对其他函数有用),那么你可以为R函数构建一个表示“命名参数”的结构并调用它:
let nums = namedParams ["x", 2.0; "y", 3.0]
R.sum(nums).AsNumeric() |> Seq.head
请注意,对于可以静态推断参数的函数,情况更好。 E.g:
R.mean(x=[1;2;3])