こんにちは、みんな、
データテーブルからデータを取得し、ユーザーがさらに分析するために選択できるようにグラフィカルに表示するJSLコードを作成しようとしています。 私が取得したいのは、PCAプラットフォームからの固有値レポートとFit ModelPlatformからの効果の概要レポートを組み合わせたようなものです。 ビジュアルをPCAレポートのように見せたいのですが、効果の概要レポートの機能(つまり、行を選択できる)です。
PCA固有値レポート(どのように表示したいか):

Fit Model Effect Summaryレポート(必要な機能)。 このプラットフォームでは、リストボックス()で行を選択し、「削除」または「追加」を選択できます。 削除または追加したくないのですが、ユーザーが(上記の出力から)行を選択できるようにしたいと思います。

使用しているデータテーブルを添付しました。これは、以下のJSLコードの「CurrentDataTable()」です。 以下のJSLコードは私を途中で理解させることができますが、私が望んでいるものとは異なります。
Names Default To Here( 1 );
PC_dt = Current Data Table();
PC_n = {};
PC_eigv = {};
PC_per = {};
PC_cump = {};
For( i = 1, i <= N Rows( PC_dt ), i++,
Insert Into( PC_n, PC_dt:"Number"n[i] );
Insert Into( PC_eigv, Round( PC_dt:"Eigenvalue"n[i], 5 ) );
Insert Into( PC_per, Round( PC_dt:"Percent"n[i], 5 ) );
Insert Into( PC_cump, Round( PC_dt:"cumulative Percent"n[i], 5 ) );
);
PC_Rpt_win = New Window( "PC Results",
Outline Box( "Eigenvalues & cumulative Percent",
//List Box(
//List Box(
Table Box(
Number Col Box( "Number", Eval List( PC_n ) ),
Number Col Box( "Eigenvalue", Eval List( PC_eigv ), <<SET format=""></SET>
コメントアウトされたセクションを使用すると、コードから次の出力が得られます(ただし、行は選択できません)。

PCや固有値などのリストを生成するコードのアウトラインボックス前の部分全体が必要かどうかは本当にわかりません。しかし、の列を扱っているので、それを行うのは論理的な方法のように思えました。データテーブルと関数にはリストが必要です。 必要がなくても機能します。
</CODE></P><P> </P><P>コメントアウトされたListBox()呼び出しのいずれかまたは両方をTable Box()の周りに含めると、次のようになります。 行は選択可能ですが、何も表示されません。</P><P><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DiedrichSchmidt_3-1635336043749.png" style="width: 400px;"><IMG src="https://us.v-cdn.net/6038925/uploads/images/37045iA319787974999980/DiedrichSchmidt_3-1635336043749.png" role="button" title="DiedrichSchmidt_3-1635336043749.png" alt="DiedrichSchmidt_3-1635336043749.png" /></SPAN></P><P>何が間違っているのかわかりません。スクリプトインデックスには、Table Box()でList Box()呼び出しを正しく使用する方法の例が限られています。 Fit Modelプラットフォームのレポートウィンドウからツリー構造を追跡しようとしましたが、機能しません。</P><P> </P><P>要約すると、スクリプトで次のことを修正したいと思います。</P><OL><LI>PCレポートが示すように累積パーセント曲線を持つようにプロット列ボックスを修正します(上の最初の画像)。 これは項目2ほど重要ではありません。</LI><LI>Table Box()の周りのList Box()呼び出しを修正して、ユーザーがリストボックス内の行を選択できるようにします。この行は、さらに分析するために別の関数に送信されます。</LI></OL><P>提案や助けをありがとう!、</P><P>DS</P></LINGO-BODY><LINGO-LABS id="lingo-labs-430708" slang="en-US"><LINGO-LABEL>スクリプティング</LINGO-LABEL></LINGO-LABS><LINGO-SUB id="lingo-sub-430729" slang="en-US">Re:リストボックス()内のテーブルボックス()のスクリプトヘルプ</LINGO-SUB><LINGO-BODY id="lingo-body-430729" slang="en-US"><P>List Box()に特別なニーズはありますか? あなたが使用することができます<CODE class=""><<選択可能な行を設定();テーブルボックスで行を選択可能にしてから、 <<行変更関数を設定します(Function({this}、);選択に機能を追加します。
スクリプトインデックスの例:
Names Default To Here(1);
New Window("Mountains",
tb = Table Box(
String Col Box("Mountain", {"K2", "Delphi", "Kilimanjaro", "Grand Teton"}),
Number Col Box("Elevation (meters)", {8611, 681, 5895, 4199}),
Plot Col Box("", {8611, 681, 5895, 4199})
)
);
tb << Set Selectable Rows();
tb << set row change function(Function({this}, Print(this << get selected rows)));
やあ@jthi 、
迅速なフィードバックをありがとうございます。 以前に試したのですが、何も起こらなかったので、別のルートに捨てましたが、どこにも通じていませんでした。 私は戻ってそれを試しました、そしてそれはうまくいきます、ありがとう! 追加された機能は役に立ちます。 それは間違いなく、より重要な項目2を解決しました。 項目1を修正する方法がわかれば、それは素晴らしいことですが、必須ではありません。
これは関連していますが、おそらく別のスレッドです(お知らせください。別のスレッドとして再投稿します)。
JSLを使用してDModXとT²の値をPCAプラットフォームからデータテーブルに保存する方法を知っていますか? これはすべて、このプロセスを自動化するか、少なくとも他のいくつかの手順を実行して、DModXおよびT²式を保存するために使用するPCの数を決定するための基本をユーザーに提供することです。
ありがとう!、
DS
やあ@jthi 、
さて、DModXについての部分を忘れてください、スクリプトインデックスは私にそれをする方法を示しました、そしてそれは期待通りに働きます。 Save T Squareの例がありますが、それは機能していません。 私はそれを維持します。 正しいアウトラインボックスを参照する必要があると思います。
ありがとう!、
DS
項目1の場合:
これを行うには他の/より良い方法があると思いますが、<< Lowerおよび<< Upper(Lowerを指定する必要があります)メッセージが見つかりました。 << Lowerを使用すると、累積列から最初の値を取得し、それらをLowerでプロット列ボックスに設定できます。
pcb << Lower(ncb << get as matrix);

コードを使用すると、次のようになります(参照を追加して使用します)。
もっと見る...Names Default To Here( 1 );
PC_dt = Current Data Table();
PC_n = {};
PC_eigv = {};
PC_per = {};
PC_cump = {};
For( i = 1, i <= N Rows( PC_dt ), i++,
Insert Into( PC_n, PC_dt:"Number"n[i] );
Insert Into( PC_eigv, Round( PC_dt:"Eigenvalue"n[i], 5 ) );
Insert Into( PC_per, Round( PC_dt:"Percent"n[i], 5 ) );
Insert Into( PC_cump, Round( PC_dt:"cumulative Percent"n[i], 5 ) );
);
PC_Rpt_win = New Window( "PC Results",
Outline Box( "Eigenvalues & cumulative Percent",
//List Box(
//List Box(
Table Box(
Number Col Box( "Number", Eval List( PC_n ) ),
Number Col Box( "Eigenvalue", Eval List( PC_eigv ), <<SET format=""></SET> 値を取得する場合:
Make into dataテーブルを使用するだけで十分な場合があります(プラットフォームによって異なり、By変数を使用しているかどうかによって異なります)。

次に、結果のテーブルからテーブルスクリプトを確認します。


時々、それは正しいディスプレイボックスへの参照を取得するための非常に迅速な方法を提供します。
やあ@jthi 、
迅速なフィードバックとサポートに改めて感謝します。 はい、<
さて、私の唯一の問題は、T²をどのように保存するかです。 PCAプラットフォームから問題のアウトラインボックスに対処しようとするたびに、表示ボックスが<< SaveTSquareを認識しないというログエラーが表示されます。これは機能するはずです。 Scripting Indexで調べてみると、例は期待どおりに機能しますが、何らかの理由で私の場合はうまくいかず、理解できません。 頑張ります。
ありがとう!、
DS