データテーブルを引数として関数に送信する方法こんにちは、みんな、
それで、私はしばらくこれをやろうとしていますが、頭が理解できません。
いくつかの異なるフォルダーから複数の画像をエクスポートするスクリプトを作成しています。 「インポート」関数と「トリム」関数を作成しました。
Import = Function ({path},
dtimport= Multiple File Import (
// the import arguments
)<< Import Data;
Return (dtimport);
};
Trimtables = Function ({table, arg1, arg2, arg3},
table:Image<<SET name=""></SET>したがって、このテーブルをトリム関数の引数として送信しようとするまでは正常に動作します。
dt1 は実際のテーブルではなく単なるポインターであり、それをテーブルに直接送信すると、関数はそのポインターへのポインターのみを持つことになることを理解しています。 そこで私は次を使用してみました:
dt1<<SET name=""></SET>
そしてそれはうまくいきます。 問題は、各テーブルにカスタムタイトルを使用しないようにしている場合です。 私は次のことを試しました:
Trimtables (dt1<<GET name=""></GET>
しかし、これではうまくいきません。 私は(関数が期待するものを変更しながら)たくさんのバリエーションを試しました:
Trimtable (Char(dt1<<GET name=""></GET>
しかし、何もうまくいかないようです。 基本的に、私が必要とするのは、引数として &datatable を送信する C のようなものになります。 これはかなり些細なことだと思いますが、私にとってはまったく理解できません。
何か案は ?
ありがとう、
ボブ
Re: データテーブルを引数として関数に送信する方法Craige_Hales さん、ありがとう。
あなたが返信を投稿したとき、私は返信を書いていました。 同じ結論に達したのは良かったです:)
Re: データテーブルを引数として関数に送信する方法こんにちは、pmrozさん
早速のお返事ありがとうございます。
私は Caption 関数を使用しています。これは Show とよく似ていると思いますが、エラーが発生するとすぐに非常に面倒になるログに書き込む代わりに、他のすべての上に表示するという追加の利点があります。
次のコードを作成しました。これは機能します。
Names Default To Here( 1 );
Mydt = Function({},
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt<<SET name=""></SET>これは、データテーブル名を参照として使用し、そこから作業することが確かに可能であることを示しています。
問題は、複数ファイルのインポート機能で作成されたテーブルでこのコードを使用しようとすると、機能しなくなり、何か別の処理が行われていることがわかります。
複数のインポートからテーブルを作成するとき、jmp はオブジェクトをデータテーブルではなく別のものとして考慮すると思います。 get name 関数を使用すると、通常の引用符で囲まれた文字列ではなくリストが返されます。
「mydt」関数で次を使用すると、機能しているようです。
m = dt[1] <<GET name=""></GET>
それでもこれは少し奇妙に感じます。 複数のファイルをインポートするとこのような動作が発生する理由はありますか?
Re: データテーブルを引数として関数に送信する方法MFI は、テーブルが 1 つしかない場合でも、開いたテーブルのリストを返します。 インポート関数の結果は、おそらく 1 つの項目を含むリストになります。 { datatable("pictures.jmp") }または類似。 おそらく次のようなものが必要です
TrimTable( dt1[ 1 ] )
リストから最初のデータテーブルを取得します。
Re: データテーブルを引数として関数に送信する方法関数内に show ステートメントをいくつか入れて、何が起こっているかを確認してみてください。このコード スニペットは正常に動作します。
fn1 = function({tbl_path},
dt_fn1 = open(tbl_path);
dt_fn1;
);
fn2 = function({tbl, arg1, arg2},
show(tbl, arg1, arg2);
tbl:height << set name("New Name");
);
dt = fn1("$sample_data\Big Class.jmp");
show(dt);
fn2(dt, "Hello", "World");
Re: データテーブルを引数として関数に送信する方法そしてもちろん、私はこれを試しました:
Trimtables (Data Table (dt1<<GET name=""></GET>
Get Name() 命令は通常の文字列ではなく、「!\ "データ テーブル名" !\」のような奇妙なものを返すだけだと思います。
最後の手段として、文字列をトリミングして特殊文字を削除することもできると思いますが、それは苦肉の策のように思えます