【发布时间】:2017-01-13 05:54:01
【问题描述】:
上周我向this question 询问了传递给RProvider 的seq<float option> 值。我曾希望我能够将接受的答案应用到 F# 中的其他 option 类型。不幸的是,NaN 仅适用于 R 中的numeric。
如何将 F# 中的 None 字符串转换为 NA 并传递给 R?
【问题讨论】:
标签: f#
上周我向this question 询问了传递给RProvider 的seq<float option> 值。我曾希望我能够将接受的答案应用到 F# 中的其他 option 类型。不幸的是,NaN 仅适用于 R 中的numeric。
如何将 F# 中的 None 字符串转换为 NA 并传递给 R?
【问题讨论】:
标签: f#
您可以使用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,当它出于某种原因在列表中时。
【讨论】:
您上一个问题的答案仍然适用。您可以使用null 表示缺少的字符串值:
let optString = ["x"; null; "y"]
let testData5 =
namedParams [
"optString", optString;]
|> R.data_frame
给我:
val testData5 : SymbolicExpression =
选择字符串
1 个
2<NA>
3 年
您可以将选项字符串转换为字符串列表:
let optString2 = [Some "x"; None; Some "y"]
optString2
|> List.map (fun x -> match x with
| Some x -> x
| None -> null)
【讨论】: