0
#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)我不知道该怎么做

4

1 回答 1

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

请注意,对于可以静态推断参数的函数,情况会更好。例如:

R.mean(x=[1;2;3])
于 2013-10-01T18:07:40.960 回答