こんにちは、みんな、
私は最近、ユーザーが行を選択して次のステップのプロセスを実行できるようにしたいため、Table Box() 機能を使用して新しいウィンドウにいくつかの情報を要約する JSL を書き始めました。 インタラクティブなテーブルボックスの作成は面倒な場合があります。また、私は最近、Get As Report コマンドを使用して、データ テーブルを対話型のテーブル ボックスのようなインターフェイスに変換できることを知りました。これにより、インターフェイスの構築がはるかに簡単かつ迅速になります。
たとえば、次の JSL を参照してください。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Boston Housing.jmp" );
RptWin = New Window( "Data Table as report",
Outline Box("Data Table as Report",
dt_Rpt = dt << Get as Report();
)
);
私が抱えている唯一の問題は、テーブル ボックスの場合と同様に、新しいウィンドウで出力を使用する方法です。
テーブル ボックス環境では、選択した情報を返し、コードのさらに下で使用できるように関数を設定できます。 ただし、「レポートとして取得」コマンドではそれができません。 少なくとも、その方法の例は見つかりませんでした。また、Scripting Index には [レポートとして取得] コマンドに関する情報があまりありません。
次のコードは、一度に 1 行を選択できるテーブル ボックスを作成する方法の例です。
tb = Table Box(
Number Col Box( "PC Number", Eval List( PC_n ) ),
Number Col Box( "Eigenvalue", Eval List( PC_eigv ), <<SET format=""> 1, Throw( "Too many items selected!\!rOnly one selection possible." ),
N Items( SelRows ) == 1,
SelRows = this << Get Selected Rows;
N_PCs = SelRows[1];
);
)
)
)</SET>「レポートとして取得」出力を使用するときに、同じ種類の機能を取得する方法はありますか?
フィードバックをお寄せいただきありがとうございます。
DS
やあ@ih 、
はい、完璧です! それは実際にはまったく理にかなっていて、なぜそうしようと思わなかったのかわかりません。
素早い解決策をありがとうございました!、
DS
きっと。 グラフはすでにテーブルに関連付けられているので、以下の 2 つの行を Set Row Change 関数に追加するだけで、その動作が確認できると思います。
tb << Set Row Change Function(
Function( {this},
{SelRows},
SelRows = this << Get Selected Rows;
If(
N Items( SelRows ) > 1, Throw( "Too many items selected!\!rOnly one selection possible." ),
N Items( SelRows ) == 1,
SelRows = this << Get Selected Rows;
NPCs = SelRows[1];
);
// ** Added next two lines **
dt_results << Clear Select;
dt_results << Select rows(SelRows);
)
);やあ@ih 、
素早い返信と解決策をありがとうございます。まさにそれが私が探していたものです。 完璧に動作します。 これは、私が実装しようとしていたより大きなコードです。 これは別のトピックであることは承知していますが、以下のコードのグラフ ビルダー表示を [レポートとして取得] テーブル ボックスにリンクして、ユーザーがテーブル ボックス内の行をクリックしたときにその行が強調表示されるようにする方法をご存知ですか?グラフビルダー内の対応するデータポイント?ちなみに、私はボストン ハウジングをサンプル データ セットとして使用しており、応答として mvalue を使用し、パーティション内の予測子として他のすべての列を使用しています。また、検証部分として 0.3 を使用しています。
ありがとう!、
DS
Names Default To Here( 1 );
lbWidth = 168;
dt = Open( "$SAMPLE_DATA/Boston Housing.jmp" );
// Expression to store the current settings in global variables
recallRolesS1 = Expr(
::dtchosenRecall = dtchosen
);
// Expression to clear all current settings. KW: Clear
clearRoles = Expr(
Try(
colListY << RemoveAll;
ColListX << RemoveAll;
ColListW << RemoveAll;
ColListF << RemoveAll;
colListV << RemoveAll;
)
);
// Expression to store the current settings in global variables
recallRoles = Expr(
::ycolRecall = colListY << GetItems;
::xcolRecall = colListX << GetItems;
::WcolRecall = colListW << GetItems;
::FcolRecall = colListF << GetItems;
::vcolRecall = colListV << GetItems;
::max_spRecall = max_sp_input << get;
::partVPRecall = partVP_input << Get;
);
//Function to choose the data table to model. KW: choose_data
choose_data_table = Function( {},
list = {};
For( i = 1, i <= N Table(), i++,
list[i] = Data Table( i ) << get name
);
win = New Window( "Select a data table",
<<MODAL> 1, Throw( "Too many items selected!\!rOnly one selection possible." ),
N Items( SelRows ) == 1,
SelRows = this << Get Selected Rows;
NPCs = SelRows[1];
);
)
);
);
Part = Expr(
If(
N Items( vcols ) == 1,
dt_results = New Table( "Partition_Results",
Add Rows( max_sp ),
New Column( "Splits", Numeric, Continuous ),
New Column( "Training RSquare", Numeric, Continuous ),
New Column( "Validation RSquare", Numeric, Continuous ),
New Column( "Training RASE", Numeric, Continuous ),
New Column( "Validation RASE", Numeric, Continuous ),
New Column( "Training N", Numeric, Continuous ),
New Column( "Validation N", Numeric, Continuous ),
New Column( "RSquare Diff", Numeric, Continuous, Formula( "Training RSquare"n - "Validation RSquare"n ) ),
New Column( "Penalized Valid RSquare", Numeric, Continuous, Formula( "Training RSquare"n - 0.05 * "Splits"n ) )
),
N Items( vcols ) == 0 & Is Missing( partVP ) == 0,
dt_results = New Table( "Partition_Results",
Add Rows( max_sp ),
New Column( "Splits", Numeric, Continuous ),
New Column( "Training RSquare", Numeric, Continuous ),
New Column( "Validation RSquare", Numeric, Continuous ),
New Column( "Training RASE", Numeric, Continuous ),
New Column( "Validation RASE", Numeric, Continuous ),
New Column( "Training N", Numeric, Continuous ),
New Column( "Validation N", Numeric, Continuous ),
New Column( "RSquare Diff", Numeric, Continuous, Formula( "Training RSquare"n - "Validation RSquare"n ) ),
New Column( "Penalized Valid RSquare", Numeric, Continuous, Formula( "Validation RSquare"n - 0.05 * "Splits"n ) )
),
N Items( vcols ) == 0,
dt_results = New Table( "Partition_Results",
Add Rows( max_sp ),
New Column( "Splits", Numeric, Continuous ),
New Column( "Training RSquare", Numeric, Continuous ),
New Column( "Training RASE", Numeric, Continuous ),
New Column( "Training N", Numeric, Continuous ),
New Column( "Penalized Train RSquare", Numeric, Continuous, Formula( "Training RSquare"n - 0.05 * "Splits"n ) )
)
);
For( i = 1, i <= max_sp, i++,
dt_results:"Splits"n[i] = i
);
dt_name = dtchosen << Get Name;
For( i = 1, i <= N Rows( dt_results ), i++,
Psplit = dt_results:"Splits"n[i];
str = Eval Insert(
"report = (dtchosen<<PARTITION></PARTITION></MODAL>そうだと思います。テーブルに到達するには、Get are Report() 関数から返される参照参照の 1 つ下のレベルに移動するだけで済みます。これを試して:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Boston Housing.jmp" );
RptWin = New Window( "Data Table as report",
Outline Box("Data Table as Report",
dt_Rpt = dt << Get as Report();
)
);
tb = dt_Rpt[Table Box( 1 )];
tb << Set Shade Headings( 1 );
tb << Append(
Plot Col Box( "",
:mvalue << get values,
<<SET scale=""> 1, Throw( "Too many items selected!\!rOnly one selection possible." ),
N Items( SelRows ) == 1,
SelRows = this << Get Selected Rows;
N_PCs = SelRows[1];
);
)
);</SET>