ライブラリ内の.std()
と.custom()
関数の両方を使用しようとしていreductio
ます。
私のコードは、帰謬法の部分について次のとおりです。
dims.theme1 = myCrossfilter.dimension(function(d) {return(d.theme1);});
groups.theme1 = dims.theme1.group();
var reducer = reductio()
.custom({initial:reduceInit,add:reduceAdd,remove:reduceRemove})
.std("pl");
reducer(groups.theme1);
カスタム関数の私のコードは次のとおりです。
reduceAdd = function(p,v) {
if (!p.fundsData.hasOwnProperty(v.AdyneAccount)) {
p.fundsData[v.AdyneAccount]=0;
}
if (!p.stratsData.hasOwnProperty(v.Strategy)) {
p.stratsData[v.Strategy]=0;
}
p.fundsData[v.AdyneAccount]+=+v.plfund;
p.stratsData[v.Strategy]+=+v.plstrat;
p.value+=+v.pl;
return(p);
};
reduceRemove = function(p,v) {
p.fundsData[v.AdyneAccount]-=+v.plfund;
p.stratsData[v.Strategy]-=+v.plstrat;
p.value-=+v.pl;
return(p);
};
reduceInit = function(p,v) {
return({
value:0,
fundsData:{},
stratsData:{}
});
};
(実行することによるgroups.theme1.all()[0]
)結果は次のようになると思います(この例では、入力した値はランダムです):
{
"key": "theTheme",
"value": {
"value": 10,
"fundsData": {
"a": 10,
"b": 5,
"c": 4
},
"stratsData": {
"somename": 8
},
"count": null,
"sum": null,
"sumOfSq": null,
"std": 0
}
}
そして、それはありませんが、それはのために値を生成しないcount
、sum
とsumOfSq
(のためにそうstd
もない、もちろん)。
.std("pl")
まったく同じレコードのセットに対してカスタム関数を使用せずに単独で実行すると、期待どおりに機能します。カスタム関数を追加すると、.std("pl")
パーツの正しい計算が妨げられる理由がわかりません。
すべての助けを歓迎します!
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加