通过序号<;浮动期权>;从F#到R提供者
我希望能够将一系列的通过序号<;浮动期权>;从F#到R提供者,r,f#,R,F#,我希望能够将一系列的选项float传递给F#中的RProvider。如果我有一个带有Some float和None的浮点序列,我如何使用R提供程序将None值输入R?我本以为Nones等同于R中的NA值,但我无法将seq传递给R 例如,与 开放系统 开放RDotNet 开放式打印机 打开RProvider.graphics 打开RProvider.stats 设optData4= seq[约10.0;约9.0;约8.0;无;约6.0; 一些5.0;一些5.0;无;一些4.0;一些2.0; 无]
选项float
传递给F#
中的RProvider。如果我有一个带有Some float
和None
的浮点序列,我如何使用R提供程序将None
值输入R
?我本以为None
s等同于R
中的NA
值,但我无法将seq
传递给R
例如,与
开放系统
开放RDotNet
开放式打印机
打开RProvider.graphics
打开RProvider.stats
设optData4=
seq[约10.0;约9.0;约8.0;无;约6.0;
一些5.0;一些5.0;无;一些4.0;一些2.0;
无]
设testData4=
命名参数[
“注册价格”,optData4;]
|>R.数据帧
我得到一个多行错误:
System.Exception:没有为类型Microsoft.FSharp.Collections.FSharpList`1[[Microsoft.FSharp.Core.FSharpOption`1[[System.Double,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]、FSharp.Core,Version=4.4.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a]]或其任何基本类型注册的转换器
>在RProvider.RInteropInternal。convertToR@164.Invoke(字符串消息)在C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInterop.fs中:第164行
在C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\rinterp.fs:274行中的RProvider.rinternal.REngine.SetValue(REngine this,Object value,FSharpOption`1 symbolName)处
在C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInterop.fs中的RProvider.rinterpinal.toR(对象值)处:第287行
在RProvider.RInterop。passArg@447(列出'1个临时符号,对象参数)在C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInterop.fs中:第461行
在RProvider.RInterop。argList@468-1.C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInterop.fs中的GenerateNext(IEnumerable`1&next):第469行
在Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.MoveNextImpl()中
在Microsoft.FSharp.Core.CompilerServices.GeneratedSequenceBase`1.System-Collections-IEnumerator-MoveNext()中
位于System.Collections.Generic.List`1..ctor(IEnumerable`1集合)
在Microsoft.FSharp.Collections.SeqModule.ToArray[T](IEnumerable`1来源)
在C:\Tomas\Public\bmc\FSharp.RProvider\src\RProvider\RInterop.fs中的RProvider.RInterop.callFunc(字符串packageName,字符串funcName,IEnumerable`1 argsByName,对象[]varArgs)处:第466行
位于C:\Users\sranney\repositories\carolina\u-refit\u-bits\refit\u-bits\RDemo.fs中的.FSI\u 0012.main@():第102行
由于错误而停止
我可以将任何内容传递给r提供者的唯一方法是使用
让optData4=
seq[约10.0;约9.0;约8.0;无;约6.0;
一些5.0;一些5.0;无;一些4.0;一些2.0;
无]
|>Seq.chooseid
设testData4=
命名参数[
“注册价格”,optData4;]
|>R.数据帧
但这否定了无选项的目的(我本以为这与R
sNA
值相当)
如何将一系列值传递给R提供者
,其中一些值在F#
中是None
,在R
中应该是NA
?您可以使用dedle和null值执行此操作:
let toNullable =
function
| None -> Nullable()
| Some x -> Nullable(x)
let optData4 =
seq [Some 10.0; Some 9.0; Some 8.0; None; Some 6.0;
Some 5.0; Some 5.0; None; Some 4.0; Some 2.0;
None]
|> Seq.map(toNullable)
let series = Series.ofNullables(optData4)
let testData4 =
namedParams [
"regPrice", series;]
|> R.data_frame
您可以使用Deedle和null值执行此操作:
let toNullable =
function
| None -> Nullable()
| Some x -> Nullable(x)
let optData4 =
seq [Some 10.0; Some 9.0; Some 8.0; None; Some 6.0;
Some 5.0; Some 5.0; None; Some 4.0; Some 2.0;
None]
|> Seq.map(toNullable)
let series = Series.ofNullables(optData4)
let testData4 =
namedParams [
"regPrice", series;]
|> R.data_frame
我认为您应该能够做到这一点,只需将None
值替换为nan
(这并不完全正确,因为在RNA
和nan
中是不同的,但是对于F#中的浮点,无法表示两个不同的非值):
我没有对此进行测试,但我认为这是我们在Deedle内部所做的。我认为您应该能够做到这一点,只需将None
值替换为nan
(这并不完全正确,因为在RNA
和NaN
中是不同的,但是对于F#中的浮点,无法表示两个不同的非值):
我没有测试过这一点,但我认为这是我们在Deedle内部所做的。我完全没有F#知识,但在RNA
中,NA实际上是一个超类,它包含了特定的NA-values-for-each-mode-other-non-logical然后你可能需要返回NA#u real_uu
我完全没有F#知识,但在RNA
中,它实际上是一个超类,包含了特定的NA-values-for-each-mode-not-logical然后你可能需要返回NA|u real\uuuu
工作得很好。我使用了一个简单的函数来转换为值/nana:让toNan x=match x与| Some x->x | None->nan
匹配,并将所有内容传递给R
,否则我会这样做。工作得很好。我使用了一个简单的函数来转换为值/nana:>让toNan x=match x与| Some x->x | None->nan
匹配,并像我那样将所有内容传递给R
。选项。Tonulable
内置于F#4.0及更高版本,因此无需定义自己的版本。选项。Tonulable
内置于F#4.0及更高版本,因此无需定义自己的版本离子。