2016-06-23 17 views
1

F#でRProviderを使用してデータの統計を計算しています。 R関数を呼び出すと、SymbolicExpression typeが返されますが、このタイプのデータを解析することは本当に困難です。私のコードでは、私はこのような分位数を数えます。SymbolicExpression - 文字列へ

let seq = R.seq(namedParams ["from", box 0;"to", box 1;"length", box 11;]) 
let quantiles = R.quantile(namedParams ["x", box dataWithoutNan1; "prob", box seq; "type", box 5;]) 

分位数は、SymbolicExpression型です。

val quantiles : SymbolicExpression = 
      0%   10%   20%   30%   40%   50% 
0.000000e+00 3.203978e-03 5.366154e-03 1.101344e-02 8.259162e-02 4.533620e-01 
     60%   70%   80%   90%   100% 
1.278446e+00 2.706468e+00 4.927400e+00 1.141095e+01 8.944235e+02 

SymbolicExpressionタイプは部材Value

let quantilesValue = quantiles.Value 

を持っており、それが型であるOBJ

val quantilesValue : obj = 
    [|0.0; 0.003203978402; 0.00536615421; 0.01101343569; 0.08259161954; 
    0.4533619823; 1.278445928; 2.706467538; 4.927399755; 11.41095162; 
    894.4234507|] 

私は

0.0のように、これらの値を印刷してやろうとしています。 0.003203978402; 0.00536615421; 0.01101343569; 0.08259161954; 0.4533619823; 1.278445928; 2.706467538; 4.927399755; 11.41095162; 894.4234507

私は、配列にこれらのオブジェクトをキャストするか、リストアップしてみましたが、私はこれを行うことができませんでした。 SymbolicExpressionから簡単に値を取得する方法はありますか?

+0

が見える、この問題のために動作します。しかし、Seqにキャストすることができます。 'Seq.cast quantilesValue'は機能しますか? – Petr

+0

私は試しましたが、 'FS0001:型 'obj'は 'Collections.IEnumerable'型と互換性がありません –

+3

文書には、' SymbolicExpression'を変換するために使用できる 'GetValue <'T>' 'double []'に変換します。多分それがあなたが必要とするものですか? – TheInnerLight

答えて

1

これらのコードは、それが配列であるよう

let quantiles = R.quantile(namedParams ["x", box dataWithoutNan1; "prob", box seq; "type", box 5;]).GetValue<double[]>() 

または

let quantiles = R.quantile(namedParams ["x", box dataWithoutNan1; "prob", box seq; "type", box 5;]).GetValue<list<double>>()