Xファンクションの入力と出力XF-Input-and-Output
Xファンクションの変数
XファンクションはLabTalkの変数型(StringArrayを除く)を引数として受け付けます。LabTalk変数だけでなく、Xファンクションは複雑なデータ構造の特別な変数型を使うこともできます。
これらの特別な変数型は、下表にあるように Xファンクションへの引数としてのみ動作します。(使用可能なキーワードについての詳細は、この章にある範囲の特殊なキーワードセクションをご覧ください。)
変数型 |
説明 |
サンプル構造 |
コメント
|
XYRange
|
XとYの組合せ。任意でYエラーバーデータを含む。
|
- (1,2)
- <new>
- (1,2:end)
- (<input>,<new>)
- [book2]sheet3!<new>
|
グラフに対して、インデックスを直接使って、プロット範囲 (1,2)がグラフ上の1番目と2番目のプロットであることを示す。
|
XYZRange
|
X, Y, Zデータの組合せ。
|
- (1,2,3)
- <new>
- [book2]sheet3!(1,<new>,<new>)
|
|
ReportTree
|
階層レポートのツリーベースオブジェクトは ワークシート範囲またはLabTalkツリー変数に結びついている必要がある。
|
- <new>
- [<input>]<new>
- [book2]sheet3
|
|
ReportData
|
ベクターのコレクションのツリーベースオブジェクトは ワークシート範囲またはLabTalkツリー変数に結びついている必要がある。ReportTreeとは違って、ReportDataは通常のワークシートに出力し、ワークシート内の既存のデータの終わりに追加するのに使うことができる。ReportDataオブジェクト内のすべての列はグループ化されている必要がある。
|
- <new>
- [<input>]<new>
- [book2]sheet3
- [<input>]<input>!<new>
|
|
変数型についてより理解を深めるには、この章のReportDataの出力セクションのサンプルを参照してください。
範囲の特殊なキーワード
範囲の特殊なキーワードRange Keyword
- <new>
- 新規オブジェクトを追加/作成
- <active>
- アクティブオブジェクトを使用
- <input>
- 同じXファンクションの入力範囲と同じ
- <same>
- Xファンクションの前の変数と同じ
- <optional>
- オブジェクトが入力または出力で任意であることを示す
- <none>
- オブジェクトは作成されない
レポートデータの出力
多くの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;
Xファンクション入力にリテラル文字列を割り当て
<[< および >]>は、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">]>;
|