検索と正規表現を有効にして、現在選択されている列でデータ フィルターを開くスクリプト完全な開示: 私はコーダーではなく、JSL は特に苦労しますが、私が書いているスクリプトのこの部分は、以前よりもはるかに簡単になるはずだと感じています。 「検索」と「正規表現」を有効にしてデータフィルターを頻繁に使用しますが (画像を参照)、これらの設定を保存するオプションがないため、フィルターを開くたびに面倒なことに再度有効にする必要があります。 私が欲しいのは、次のような埋め込みテーブル スクリプトです。
1) データフィルターを開く
2)現在選択されている列を自動的に追加します(つまり、列を選択してからスクリプトを起動します)
3) 「検索」を有効にする
4) 「正規表現」を有効にする

残念ながら、スクリプトの保存オプションはこれしか保存しません:
Current Data Table() << Data Filter(
Location( {630, 160} ),
Conditional,
Add Filter( columns( :name ), Display( :name, Size( 160, 225 ), List Display ) )
);検索と正規表現はスクリプトに保存されません。 . .
しかし、ここに私が助けを求めることを余儀なくされた部分があります.現在選択されている列の名前を「columns()」および「Display()」関数に渡す方法を一生理解できません.
私は多くのことを試しました。たとえば、これは次のとおりです。
Names Default to Here( 1 );
dt = Current Data Table( );
col_selected = dt << Get Selected Columns(string);
dt << Data Filter(
Location( {630, 160} ),
Conditional,
Add Filter( columns( col_selected ), Display( col_selected, Size( 160, 225 ), List Display ) )
);しかし、私はエラーが発生します:
「指定された列がデータ テーブルに見つかりません。'columns' のアクセスまたは評価では、columns( col_selected ) /*###*/」
おそらく col_selected がリストであるためですが、1 項目のリストから名前だけを取得する方法がわかりません。 本当はこんなに難しくないはずです。
Re: 検索と正規表現を有効にして、現在選択されている列でデータ フィルターを開くスクリプトありがとう@マークベイリー複数が選択されている場合、最初の列のみをフィルタリングしますが、これも機能します。 ただし、あなたの提案を使用して列参照を取得することで、まさに私が望むことを行う FOR ループを作成することができました。
Names Default to Here( 1 );
dt = Current Data Table( );
list = dt << Get Selected Columns( );
obj = dt << Data Filter( );
For( i = 1, i <= N Items( list ), i++,
obj << Add Filter( columns( Column( list[i] ) )
)
);
Re: 検索と正規表現を有効にして、現在選択されている列でデータ フィルターを開くスクリプトその方法は複雑です。 ただし、これが機能する唯一の方法ではありません。 式は強力なコンストラクターですが、常に必要なわけではありません。 Columns() 引数には列参照が必要であることに注意してください。 それだけです。 リテラル値 (列名)、変数に格納された値、または関数から返された値の可能性があります。
Names Default to Here( 1 );
// open example data table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// select a column (mimic result by interactive user)
dt << Go To( :age );
// identify selection
col = dt << Get Selected Columns( String );
// obtain column reference
col = Column( col[1] );
// launch data filter on selected column
df = dt << Data Filter(
Add Filter( Columns( col ) )
);
Re: 検索と正規表現を有効にして、現在選択されている列でデータ フィルターを開くスクリプト@ionatx同感です。私はこれに苦労し、最終的にフォーラムで解決策を見つけました。私の大まかな理解は、あなたがこのすべての困難を乗り越える必要があるということです式を別の式に挿入します。 元のコードでは、col_selected は決して評価した。Data Filter() は、列のタイトルとして認識されない文字 "col_selected" のみを認識したため、エラー "指定された列がデータ テーブルに見つかりません"。したがって、それを Expr() 内に囲みます。これは、評価する必要がある式であることを示します。次に、Eval Expr() 内に全体を囲み、Expr() 内に囲まれたものの評価を強制します。次に、 Eval() を全体にラップします表現本質的に実行します目的の出力を生成する式。それはすべて非常に複雑に感じますが、それがどのように機能するかです.
もっと知りたいですか?https://community.jmp.com/t5/JSL-Cookbook/Insert-one-expression-into-another-using-Eval-Insert-Eval-Expr/ta-p/48998
Re: 検索と正規表現を有効にして、現在選択されている列でデータ フィルターを開くスクリプト@クリス_ロドリゲスうまくいきました、わかりませんなぜうまくいきましたが、うまくいきました。
@ジェフ・パーキンソンフォローアップしていただきありがとうございます。はい、そうします。
Re: 検索と正規表現を有効にして、現在選択されている列でデータ フィルターを開くスクリプト@クリス_ロドリゲスData Filter() メッセージ内で評価する変数を取得する方法を把握しており、Find および Regex オプションをオンにするための JSL サポートがないことを確認できます。
価値があると思われる場合は、必ずJMPウィッシュリスト.
Re: 検索と正規表現を有効にして、現在選択されている列でデータ フィルターを開くスクリプトcol_selected のような変数をデータ フィルター関数に渡すには、Eval(Eval Expr(Expr())) 構造を使用する必要があります。JSLはとても奇妙です。しかし、これは次のようになります。
Names Default to Here( 1 );
dt = Current Data Table( );
col_selected = dt << Get Selected Columns(string);
Eval(
Eval Expr(
dt << Data Filter(
Location( {630, 160} ),
Conditional,
Add Filter( columns( Expr(col_selected) ), Display( Expr(col_selected), Size( 160, 225 ), List Display ) )
);
)
);検索および正規表現オプションの場合... 私はそれが可能であるとは思えません。スクリプト ガイドの Data Filter() ドキュメントを見ると、これらのオプションについては言及されていません。スクリプティング インターフェイスがそのレベルの粒度を持っているとは思えず、それらのチェックボックスはインタラクティブにしか表示できません。私は間違っているかもしれませんが。他の誰かがその解決策を提案するかもしれません。