リストに式を挿入したい最初のセクションは、以下のコード行で簡単に解決できます。
insert into( newlist, name expr( name_arg ) );
次のセクションを解決します。
スクリプトの 2 番目の部分、相互作用の用語を含む部分が動作するようになりました。
</CODE></PRE><P> </P><PRE><CODE class=" language-jsl">for( a = 1, a <= N items( collist2 ), a++,
// Empty arg to identify cols by names
name_arg = Expr( column() );
name_arg2 = Expr( column() );
// For whatever the match below, the result must be added to newlist2
// Regex works, as per regex101.com
if( !contains( collist2[a], "*" ), insert into( name_arg, eval insert( collist2[a] ) );
insert into( newlist2, name expr( name_arg ) ), // single term insert, refer to basic needs flow above
insert into( name_arg, eval insert( regex( collist2[a], "^(.*)\*(.*)$", "\1" ) ) ); // Breaks apart 1st group to insert into column()
insert into( name_arg2, eval insert( regex( collist2[a], "^(.*)\*(.*)$", "\2" ) ) ); // Breaks apart 2nd group to insert into column()
insert into( newlist2, Eval Expr( expr( name_arg )*expr( name_arg2 ) ) );
);
);
show( newlist2 );
Output:
newlist2 = {Column("Col 1"), Column("Col 2"), Column("Col 3"), Column("Col 4"), Column("Col 5"), Column("Col 1") * Column("Col 2"), Column("Col 2") * Column("Col 4"), Column("Col 5") * Column("Col 5")};願わくば、これが他の人が式操作を学習するのに役立つことを願っています。 それは長い道のりですが、強力で価値があります! 
こんにちは、
私は表情操作を学んでいますが、頭を悩ませています。
以下のコードの最初のセクションでは、文字列列名を column() 式に正常に挿入できますが、生成された式をリストに挿入できません。
2 番目のセクションでは、相互作用用語 (これは SLS の効果リストです) を分解し、それらを独自の column() 式に挿入し、相互作用用語としてつなぎ合わせてから、それをリストに挿入します。このセクションは機能しません。
式操作の仕組みについて、何か役立つヒントや誤解していることを知っている人はいますか?よろしくお願いします!
名前のデフォルトは here(1) です。 // 以下の基本的な必要性 - ただし、単一の列名に対してのみ機能します。 collist = { "Col 1", "Col 2", "Col 3", "Col 4", "Col 5" }; newlist = {}; for( i = 1, i <= N items(collist), i++, // 名前で列を識別する空の引数 name_arg = Expr( column() ); insert into( name_arg, eval insert( collist[i] ) ); // 結果: column("Col 1")、または他の列が挿入された <-- 意図したとおりに動作 show( name_arg ); // 正常に挿入されたことを示す insert into( newlist, insert into( name_arg, eval insert( collist[i] ) ) ); // ネストされた insert into は機能しません // 最初の insert into の結果を newlist に挿入する必要があります );ショー ( newlist ); // 現在空のリストを表示しています ////////////////////////////////////// 動作しません, BELOW // 高度なフロー - インタラクション検出 collist2 = { "Col 1", "Col 2", "Col 3", "Col 4", "Col 5", "Col 1*Col 2", "Col 2*Col 4"、"列 5*列 5" }; newlist2 = {}; for( a = 1, a <= N items( collist2 ), a++, // 名前で列を識別するための空の引数 name_arg = Expr( column() ); // 以下の一致が何であれ、結果を newlist2 に追加する必要があります// 正規表現は regex101.com のように機能します上記の流れ insert into( name_arg2, eval insert( regex( collist2[a], "^(.*)\*(.*)$", "\1" ) ) ); // 最初のグループを分割して列に挿入します() insert into( name_arg2, eval insert( regex( collist2[a], "^(.*)\*(.*)$", "\2" ) ) ); // 2 番目のグループを分割して列に挿入します() // 以下の行は、1 番目と 2 番目のグループを相互作用項として結合し直すモックアップです - 動作しません //eval expr( expr( insert into( name_arg2, eval insert( regex( mylist2[a], "^(.*)\*(.*)$", "\1" ) ) )*insert into( name_arg2, eval insert( regex( mylist2[a], "^(.*)\*(.*) $", "\2" ) ) ); ) ); Desired_output = { column("Col 1"), column("Col 2") , column("Col 3"), column("Col 4"), column("Col 5"), column("Col 1")*column("Col 2"), column("Col 2")*column ("Col 4"), column("Col 5")*column("Col 5") };