Я импортирую данные Excel в скрипт F #, который будет использоваться в регрессии R. Код:Преобразование типов в F #
let path = @"C:\Data\DataForRegression.csv"
let fileStream = new FileStream(path,FileMode.Open,FileAccess.Read)
let streamReader = new StreamReader(fileStream)
let contents = streamReader.ReadToEnd()
let cleanContents =
contents.Split([|'\n'|])
|> Seq.map(fun line -> line.Split([|','|]))
|> Seq.skip(1)
|> Seq.map(fun values ->
Double.Parse(values.[0]),
Double.Parse(values.[1]),
DateTime.Parse(values.[2]).ToShortDateString(),
Int32.Parse(values.[3]),
Int32.Parse(values.[4]),
Int32.Parse(values.[5]),
Int32.Parse(values.[6]))
//open R
let environmentPath = System.Environment.GetEnvironmentVariable("PATH")
let binaryPath = @"C:\Program Files\R\R-3.0.1\bin\x64"
System.Environment.SetEnvironmentVariable("PATH",environmentPath+System.IO.Path.PathSeparator.ToString()+binaryPath)
let engine = RDotNet.REngine.CreateInstance("RDotNet")
engine.Initialize()
let pmpm = engine.CreateNumericVector(cleanContents |> Seq.map (fun (a,b,c,d,e,f,g) -> a))
engine.SetSymbol("pmpm",pmpm)
1-ые ряды данных выглядит следующим образом:
$ 66.92,0.9458, Ян-13,0,0,0,1
И когда Я запускаю его, я получаю это:
System.FormatException: строка ввода не была в правильном формате.
в System.Number.ParseDouble (значение String, параметры NumberStyles, NumberFormatInfo numfmt) в [email protected] (String [] значения) в C: \ ТФС \ Tff.RDotNetExample_Solution \ Tff.RDotNetExample \ RegressionUsingExcelImport .fsx: линия 19 в [email protected] (б &) при Microsoft.FSharp.Collections.IEnumerator.MapEnumerator1.System-Collections-IEnumerator-MoveNext() at [email protected](b&)
1.Система-Коллекции-IEnumerator-MoveNext() на System.Linq.Enumerable.Count [TSource] (IEnumerable
at Microsoft.FSharp.Collections.IEnumerator.MapEnumerator1 source) at RDotNet.Vector
1..ctor (двигатель REngine, SymbolicExpressionType type, IEnumerable1 vector) at RDotNet.NumericVector..ctor(REngine engine, IEnumerable
1 вектор) на RDotNet.REngineExtension.CreateNumericVector (REngine двигатель, IEnumerable`1 вектор) в $ FSI_0002.main @() в C:. \ TFS \ Tff.RDotNetExample_Solution \ Tff.RDotNetExample \ RegressionUsingExcelImport.fsx: линия 35 Остановленный из-за к ошибке
У кого-нибудь есть представление о том, что мне нужно сделать для преобразования данных? Моя догадка в том, что ему не нравится «$», но он не вносит проблем в Double.Parse (если только он не оценивается?).
Заранее спасибо
Эй, что это первая линия фактических данных (при условии, что вы не пытаетесь для синтаксического анализа текстового значения «PMPM» в double) ... – Snorex