カスタム引数を使ってテーブルを入れ替える<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />既知のLabel列名を使用してテーブルを置き換えようとしていますが、実行時にしか認識されない列名を置き換えます。これを行う方法を理解するために何時間も努力してきましたが、JSLが行列のTranspose関数とそのColumns()引数に含まれるすべての列の名前を取得する関数を間違えるとタスクが非常に複雑になります。テーブル。次のコードでは、リストの列に転置したい列の名前が設定されています。
//転置式を作成します
transposeExpr = Expr(転置(Columns()、ラベル(:WtまたはRd)));
// Columns引数式を引き出します(これにより、自分で作成してColumns()関数と間違えなくて済みます)。
columnsExpr = Arg(transposeExpr、1);
(i = 1、i <= numColumns、i ++、
に挿入(columnsExpr、Name Expr(As Column(colNames) )))
;
From(transposeExpr、1)から削除します。
挿入(transposeExpr、Name Expr(columnsExpr)、1);
cdt =現在のデータテーブル()。
cdt <<転置(Name Expr(columnsExpr)、Label(:Wt or Rd));
ただし、columnsExprは現在のテーブルの実際の参照を含むColumns引数ではなく、現在のテーブル内のすべての列の名前のリストに評価されるため、これはまだうまくいきません。(私は、これらの参照はColumns関数の引数であると解釈していると思います)
誰かが私が間違っていることを説明してもらえますか?
再:カスタム引数を持つテーブルを入れ替える1。転置(Columns().... )は、手動で入力するので、カンマで区切られた一連の列名を想定しています。それはリストの名前を期待せず、興味のあるカラム名を含むリストの名前から情報を抽出する方法を知りません。評価関数はギャップを埋めます。これは私が問題をどのように見ているかということですが、他の誰かがそれを説明するためのもっと技術的に正確な方法を持っているかもしれません。
2。Column()とAs Column:それらがどのように違うのかわかりません。ドキュメント内の短い例では、機能的に互換性があるように見えます。誰かがそれらの違いを指摘できるようにしたいと思います。
再:カスタム引数を持つテーブルを入れ替えるこれはうまくいくようです。私はこれをします:
colList = List();
(i = 1、i <= numColumns、i ++、
(colList、Column(colNames)に挿入 ;);
;
cdt =現在のデータテーブル()。
cdt <<転置(列(Eval(colList))、ラベル(:WtまたはRd));
最後のメッセージでcolListに対してEvalを呼び出さなければならないのはなぜですか?Column()とAs Column()の違いは何ですか?
再:カスタム引数を持つテーブルを入れ替える私があなたが何をしたいのか正確に理解しているかどうかわからないが、フィットネスデータが最新のものであると仮定すれば、この例はおそらく役に立つでしょう。
collist = {:Age、:Oxy、:Runtime};
データテーブル( "フィットネス")<<転置(
列(eval(collist))、
ラベル(:名前)、
出力表(「フィットネスの転置」)
)
再:カスタム引数を持つテーブルを入れ替えるこのような問題があるときは、文字列を動的に作成し、それをeval(parse())で実行することに頼ります。 それはやや強引な力ですが、私はexpr、eval、parse、name exprなどのようなさまざまな関数すべてと結びついています。
これはそれをするはずです:
transposeStr = "cdt << Transpose(Columns(" ;
にとって ( 私 = 1 、私 <= numColumns 、私 ++、
transposeStr = transposeStr || ":" || colNames [ 私 ] || 「」 ;
) ;
//最後のコンマを削除します
クレン = 長さ ( transposeStr ) ;
transposeStr = substr ( transposeStr 、 1 、 ( クレン - 2 )) ;
// label引数を追加します
transposeStr = transposeStr || ")、ラベル(:WtまたはRd))" ;
評価する ( 解析する ( transposeStr )) ;