Re:数式で列のリストを使用するやあ@jthi 、
これが意図されているかどうかはわかりませんが、リストの角かっこ、{}、およびリスト内のアイテムの数に確実に関連しています。 あなたが説明したのと同じ問題を再現できました。
InsertIntoを実行するためのソリューションが最良の選択だと思います。 解析は非常に複雑で困難になる可能性があります。 私はあなたがInsertIntoで良い解決策を持っていると思います、そしてリストブラケットの問題を回避するためにそれに固執するのが最善です。
DS
Re:数式で列のリストを使用する再びJMPディスカバリーサミットミートザエキスパートがお届けします! ホップしたオートメーション&カストブレイクアウトルームのスクリプティングと@EvanMcCorkle私のループ挿入と評価解析よりもはるかにクリーンなソリューションがありました。 NS listOfColsの周りのリストをColSumに置き換える:
listOfCols = {:height, :age, :sex}; //won't work here
f = Substitute(listOfCols, Expr(list), Expr(ColSum));
Show(f); //f = ColSum(:height, :age, :sex);Col Sum()関数が列のリストで機能するかどうかはわかりませんが、このソリューションはクリーンでシンプルです。
数式で列のリストを使用する列ダイアログから返された列リストを直接使用しようとすると、「問題」が発生しました(たとえば、{:sex、:age:name})。 byVarsを使用してCol数式(Col Mean、Col Sum ...)でそのリストを直接使用しようとすると、数式が正しく機能しません。 たとえばSum()式でリストを使用すると、正常に機能します。 これは意図された動作であり、以下の例よりも列のリストから列の合計を作成するためのよりクリーンな方法がありますか?
以下は、Sum()およびColSum()式を使用したスクリプトの例です。 ColSum()式を作成しようとした方法はいくつかありますが、式とEvalParseを使用したInsert Intoでのみ機能させることができました(デバッグの手間のために回避しようとします)。
例:
名前のデフォルトはHere(1); dt = Open( "$ SAMPLE_DATA / Big Class.jmp"); dt << New Column( "Sum"、Numeric、 "Continuous"、Format( "Best"、12)、Formula(Sum(:height、:weight))); listOfCols = {:height、:weight}; //リストはここで機能しますdt << New Column( "SumList"、<< Formula(Eval(Eval Expr(Sum(Expr(listOfCols)))))); dt << New Column( "ColSum"、Numeric、 "Continuous"、Format( "Best"、12)、Formula(Col Sum(:height、:age、:sex))); listOfCols = {:height、:age、:sex}; //ここでは機能しませんdt << New Column( "ColSumList"、<< Formula(Eval(Eval Expr(Col Mean(Expr(listOfCols)))))); //どちらも機能しませんでしたdt << New Column( "ColSumList2"、<< Formula(Eval(Eval Expr(Col Mean(Expr(listOfCols [1])、Expr(listOfCols [2 :: 3])))))) ; Show(dt:sum <<数式を取得); Show(dt:sumlist <<数式を取得); Show(dt:colsum <<数式を取得); Show(dt:colsumlist <<数式を取得); Show(dt:colsumlist2 <<数式を取得); //式を使用してIntoを挿入することは機能しているようですが、現在のところ最適なオプションformulaExpr = Expr(Col Sum()); For Each({value}、listOfCols、Insert Into(formulaExpr、Name Expr(value))); dt << new column( "InsertIntoColSum"、<< Formula(Eval(EvalExpr(formulaExpr)))); Show(dt:InsertIntoColSum <<数式を取得); //常にEvilParseを使用できますが、可能であれば回避しようとしますEval(Parse( "dt << New Column(\!" EvilParseColSumList \! "、 << Formula(Col Sum( "|| Substitute(char(listOfCols)、{" {"、"} "}、" ")||"))) ")); Show(dt:EvilParseColSumList << get Formula) ;
スクリプティング