Es scheint, als ob die RTypeProvider
nur namedParams
des gleichen Typs verarbeiten kann. Ist das der Fall?So erstellen Sie einen Datentypen von mehreren Typen mit dem RTypeProvider
Zum Beispiel
open RDotNet
open RProvider
type foo = {
Which: string
Qty: float option
}
let someFoos = [{Which = "that"; Qty = Some 4.0}; {Which = "other"; Qty = Some 2.0}]
let thingForR =
namedParams [
"which", someFoos |> List.map (fun x -> x.Which);
"qty", someFoos |> List.map (fun x -> x.Qty);
]
|> R.data_frame
nicht funktioniert, wie ich einen Fehler auf dem
This expression was expected to have type
string
but here has type
float option
sagen x.Qty
bekommen Wenn ich die Reihenfolge, in der thingForR
let umkehren, dann bekomme ich den entgegengesetzten Fehler :
let thingForR =
namedParams [
"qty", someFoos |> List.map (fun x -> x.Qty);
"which", someFoos |> List.map (fun x -> x.Which);
]
|> R.data_frame
Hier ist der Fehler x.Which
ist
This expression was expected to have type
float option
but here has type
string
Kann das Wörterbuch in der namedParams
nicht unterschiedliche Typen haben? Wenn ja, wie können Sie einen Datenrahmen mit verschiedenen Typen in F # erstellen und an R übergeben?
, die ein F # Fehler ist, willkommen zu Sprachen stark typisierte :-) Sie müssen 'es box'. Aber Sie haben auch ein Problem mit dem Optionstyp. Ich bin mir nicht sicher warum, aber es gibt keinen Konverter dafür. Lassen Sie mich zuerst nach der relevanten Antwort suchen. – s952163