我在F#中使用RProvider来计算我的数据的一些统计信息。当我调用R函数时,它返回SymbolicExpression type,但是从这种类型解析数据真的很困难。在我的代码中,我计算像这样的分位数
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
我尝试将这些对象转换为Seq或List,但我无法执行此操作。 知道如何以一种简单的方式从SymbolicExpression获取值吗?
答案 0 :(得分: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>>()