将seq <string option =“”>从F#传递给RProvider

时间:2016-09-05 21:10:27

标签: f#

上周我向this question询问了传递给RProvider的seq<float option>值。我希望我能够将接受的答案应用到F#中的其他option类型。很遗憾,NaN仅适用于R中的numeric

如何将F#中的None字符串转换为NA并传递给R?

2 个答案:

答案 0 :(得分:2)

您可以使用Option.toObj

例如:

let l1 = [ Some "x"; None; Some "y"] 

let l2 = l1 |> List.map (Option.toObj)
// val l2 : string list = ["x"; null; "y"]

您可以使用Option.toNullable作为数字值,但它会转换为Nullable<float>类型,None也会null由于某些原因,这不起作用:

let l3 = l2 |> List.map (Option.ofObj)
// val l3 : string option list = [Some "x"; null; Some "y"]

我不知道这是故意还是错误。

修改:Option.ofObj可以正常使用。由于某种原因,当F#Interactive在列表中时,None显示为null

答案 1 :(得分:1)

您之前提出的问题的答案仍然适用。您可以使用true表示缺少字符串值:

null

给我:

  

val testData5:SymbolicExpression =
      optString
  1 x
  2 let optString = ["x"; null; "y"] let testData5 = namedParams [ "optString", optString;] |> R.data_frame
  3年

您可以将选项字符串转换为字符串列表:

<NA>