繁体   English   中英

如何使用RProvider在F#中编写求和函数?

[英]How to write a sum function in F# using RProvider?

#r "RProvider.dll"
open RProvider
open RProvider.``base``

let add (x: float) (y: float) = 
    let sum = R.sum(x,y)
    sum.Value

VS给我错误“未定义字段,构造函数或成员'Value'”

我也尝试过将向量传递给R.sum

从现有的少量文档( https://github.com/BlueMountainCapital/FSharpRProvider/wiki/How-To )中,我不知道该怎么做

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])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM