式内の引用<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
すべてが同じ形式の多数のテーブルを連結するとします。 一度に 1 つのデータ テーブルを連結するループではなく、連結関数を 1 回呼び出す必要があります。 JMPでの表現を学びたいからです。
私はこのようなものが欲しいです
データテーブル("dt1") << concatenate(データテーブル("dt2"),データテーブル("dt3"),…, データテーブル("dt100"))
この例では、同じサンプル データのコピーを作成していますが、それらが異なるソースから取得され、異なる値を含む可能性があると想像してください。
すべて閉じる(データ テーブル、保存しない) ;
dt1 =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
N = 100 ;
/* このループでは、連結関数で使用する目的で、データ テーブルをコピーして文字列を作成しています */
/*二重引用符があるため、エスケープ文字を使用しています*/
dt_string = "" ;
為に(私= 2 、私<= N 、私++、
dt_tmp = ( dt1 <<サブセット(すべての行、すべての列、見えない))) ;
dt_name = "dt" ||チャー(私) ;
dt_tmp <<セット名( dt_name ) ;
もしも( dt_string == "" 、
dt_string = "データ表(\!"" || dt_name || "\!")" ;、
dt_string = dt_string || "、 データ表(\!"" || dt_name || "\!")" ) ;
) ;
見せる( dt_string ) ;
concat_expr =式( dt1 <<連結する( dt_list ))) ;
見せる( concat_expr ) ;
concat_expr2 =代わりの(名前式( concat_expr ) 、式( dt_list ) 、 dt_string ) ;
見せる( concat_expr2 ) ;
評価( concat_expr2 ) ;
そして私の問題は、式にまだエスケープ文字があり、その評価が失敗することです。
正しい式を構築するためのコードを提案していただけますか?
前もって感謝します。
JF
Re: 式内の引用明確にするために、'Show(tbls)' に至るまで提供したすべてのコードは、連結するためにフィードできるテーブルのリストを簡単に作成する方法にすぎませんでした。
しかし、物を非表示にしたい場合は、次のようにできます。
// テーブルを開く
dt1 =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
dt1script = dt1 << getScript ;
印刷する( dt1script ) ;
挿入先( dt1script 、式(見えない))) ;
印刷する( dt1script ) ;
偶然にも、これは式を操作する方法の簡単な例です。
Re: 式内の引用回答ありがとうございます。 関数を連結するリストを提供できることを知りませんでした。
MSの答えはまさに私が探していたものでした. 私はとても親しかった。
以下では、文字列とリストの有効性を比較するために、2 つのオプションを並べ替えます。
string オプションは 2.85 秒、list オプションは 4.38 秒かかります。
データ テーブルを非表示にすることで、コードを高速化できます。 サブセット機能を使えば、見えないオプションを簡単に追加できます。 しかし、getscript では、その方法がわかりません。
dt1 =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
N = 100;
始める= HPタイム() ;
dt_string = "" ;
為に(私= 2 、私<= N 、私++、
dt_tmp = ( dt1 <<サブセット(すべての行、すべての列))) ;
dt_name = "dt" ||チャー(私) ;
dt_tmp <<セット名( dt_name ) ;
もしも( dt_string == "" 、
dt_string = "データ表(\!"" || dt_name || "\!")" ;、
dt_string = dt_string || "、 データ表(\!"" || dt_name || "\!")" ) ;
) ;
見せる( dt_string ) ;
concat_expr =式( dt1 <<連結する( dt_list ))) ;
見せる( concat_expr ) ;
concat_expr2 =代わりの(名前式( concat_expr ) 、式( dt_list ) 、解析する( 「{」 || dt_string || "}" ))) ;
見せる( concat_expr2 ) ;
評価( concat_expr2 ) ;
為に(私= 2 、私<= N 、私++、近い(データ表( "dt" ||チャー(私))) 、保存しない))) ;
終わり= HPタイム() ;
ソリューション1 = (終わり-始める) / 1e6 ; /*マイクロ秒ではなく秒にする*/
始める= HPタイム() ;
dt1script = dt1 << getScript ;
テーブル= {} ;
為に(私= 2 、私<= N 、私++、
評価( dt1script ) ;
挿入先(テーブル、データ表( 「ビッグクラス」 ||シャア(私)))) ;
) ;
見せる(テーブル) ;
dt1 <<連結する(テーブル) ;
為に(私= 1 、私<= Nアイテム(テーブル) 、私++、近い(テーブル[私] 、保存しない))) ;
終わり= HPタイム() ;
ソリューション2 = (終わり-始める) / 1e6 ; /*マイクロ秒ではなく秒にする*/
Re: 式内の引用(次のようなコードの投稿は避けてくださいすべて閉じる(データ テーブル、保存しない) ;私は不注意で、開いているすべてのウィンドウに何が起こったのか最初は理解できませんでした)
式と文字列が混在しているようです。 ある段階で、文字列を実行可能コード (この場合はリストが望ましい) に解析する必要があります。
変更すると、コードは正常に動作するはずですconcat_expr2これへの割り当て:
concat_expr2 =代わりの(名前式( concat_expr ) 、式( dt_list ) 、解析する( 「{」 || dt_string || "}" ))) ;
ただし、より簡単なアプローチをお勧めします。文字列をスキップして、リストを直接作成します。
dt1 =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
N = 10 ;
dt_list = {} ;
為に(私= 2 、私<= N 、私++、
dt_tmp = dt1 <<サブセット(すべての行、すべての列、見えない) ;
に挿入( dt_list 、 dt_tmp ) ;
) ;
dt1 <<連結する( dt_list ) ;
Re: 式内の引用2回読んだことで、「連結」の問題は、式の使用を掘り下げるための単なる例だと思います。
ただし、そうでない場合は、'<< Concatenate()' がテーブルのリストを取得することに注意してください。そのため、単純に仕事を終わらせたい場合は、テーブルをいじる必要はありません。
NamesDefaultToHere ( 1 ) ;
// テーブルを開く
dt1 =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
dt1script = dt1 << getScript ;
// いくつかのコピーを作成します
n = 4 ;
テーブル= {} ;
為に(私= 1 、私<= n 、私++、
評価( dt1script ) ;
挿入先(テーブル、データ表( 「ビッグクラス」 ||シャア(私+ 1 )))) ;
) ;
見せる(テーブル) ;
// コピーを最初のテーブルに連結 - テーブルのリスト tbls を使用できます
dt1 <<連結する(テーブル、 AppendToFirstTable ) ;
// 最初のテーブル以外をすべて閉じます
為に(私= 1 、私<= Nアイテム(テーブル) 、私++、近い(テーブル[私] 、保存しない))) ; .