XファンクションはLabTalkの変数型(StringArrayを除く)を引数として受け付けます。LabTalk変数だけでなく、Xファンクションは複雑なデータ構造の特別な変数型を使うこともできます。
これらの特別な変数型は、下表にあるように Xファンクションへの引数としてのみ動作します。(使用可能なキーワードについての詳細は、この章にある範囲の特殊なキーワードセクションをご覧ください。)
変数型 | 説明 | サンプル構造 | コメント |
---|---|---|---|
XYRange |
XとYの組合せ。任意でYエラーバーデータを含む。 |
|
グラフに対して、インデックスを直接使って、プロット範囲 (1,2)がグラフ上の1番目と2番目のプロットであることを示す。 |
XYZRange |
X, Y, Zデータの組合せ。 |
|
|
ReportTree |
階層レポートのツリーベースオブジェクトは |
|
|
ReportData |
ベクターのコレクションのツリーベースオブジェクトは |
|
変数型についてより理解を深めるには、この章のReportDataの出力セクションのサンプルを参照してください。
多くのXファンクションがReportData オブジェクトの形式で、複数の出力ベクターを生成します。 通常、ReportData オブジェクトはワークシートと結びついています。デフォルトでは、入力データと同じワークブックの新しいシートになります。
出力が範囲(上記の特別な範囲、通常のワークシートまたは列範囲、または両方の組み合わせのいずれか)に設定されている場合、ReportDataはワークシートに出力されます。
次のスクリプトは、ReportData出力をワークシートに配置します。
//Book2のSheet2 へ //シートがない場合は作成 //シートがある場合は空の1列目から出力 fft1 rd:=[book2]sheet3!; // Book2 の新規シートへ fft1 rd:=[book2]<new>!; // アクティブブックのアクティブシートの列4へ fft1 rd:=[<active>]<active>!Col(4); // 入力データのワークブック内の新規シートへ fft1 rd:=[<input>]<new>!;
これらの新しい列を見つける追加のコードを記述する必要があるため、その後のデータへのアクセスはより複雑になります。
ReportDataタイプの出力には、使用されているXファンクションに応じて異なる量 (列) のデータが含まれることに注意してください。 結果を既存のシートに送信する場合は、生成されたReportData列で既存のデータを上書きしないように注意してください。 |
ReportDataをTree変数に送ることで、このような出力を保持するワークシートを作成するオーバーヘッドを回避できます。
出力が[Book]Sheet!、<new>、<active>の範囲指定形式のいずれでもない場合は、自動的にLabTalkツリー名とみなされます。
例えば、avecurves Xファンクション: には、aveXとaveY という2 つのリーフを持つ ReportData 出力が含まれています。
以下のスクリプトは、ワークシート内のデータを平均し、ReportData をツリー変数に出力します。ツリー変数には2つのベクトルリーフが含まれています。これら2つのリーフをデータセット変数に割り当て、データセット変数を折れ線グラフとしてプロットします。平均の結果を出力するための追加のワークシートや列は作成されません。
col(1)=data(1,20); //col 1に1, 2, ...を入力20 int nn = 5; loop(i,2,nn){wcol(i)=normal(20);}; //列2から5に正規化されたデータを入力 //2から5までの列の平均曲線を実行出力をツリー変数 tr に書き込み avecurves (1,2:$(nn)) rd:=tr; tr.=; // 内容を含むツリー構造を確認するには、aveX と aveY はベクトル //ツリーの葉を一時的なデータセット変数に割り当て dataset avX = tr.Result.aveX; dataset avY = tr.Result.aveY; // ワークシートのデフォルトのX列を使用してcol2から5を散布図としてプロット plotxy (?,2:nn) p:=201; //データセット変数avXをX、avYをYとする折れ線プロットをアクティブなグラフに追加 plotxy (avX, avY) o:=<active> p:=200;
<[< および >]>は、LabTalkリテラル文字列をxあファンクションの入力変数に割り当てるために導入されました。入力文字列に文字列レジスタや'、"、$などの特殊文字が含まれている場合に便利です。
以下のスクリプトは、xファンクション変数で<[< と >]>を使用するかどうかの違いを示しています。
%A = "Mysplit"; wsplit mode:=ref ref:=[Book1]Sheet1!A"Fish" name:="%A"; //結果シート名はMysplit wsplit mode:=ref ref:=[Book1]Sheet1!A"Fish" name:=<[<%A>]>; //結果シートめーはFish //名前は%aとして設定。これは、XFの参照列の名前として事前定義された変数
次の例は、Xファンクション入力で""を使用する方法を示しています。
patternT text:=<[<"Sample A" "Sample B" "Sample C">]>;