第一部分,我想将表达式插入到列表中,可以通过下面的代码行轻松解决。
insert into( newlist, name expr( name_arg ) );
解决下一节!
使脚本的第二部分起作用,即带有交互项的部分!
</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() 表达式中,但是我无法将生成的表达式插入到列表中。
第二部分拆分交互项(这是来自 SLS 的效果列表),将它们插入到它们自己的 column() 表达式中,将它们重新组合成交互项,然后将其插入到列表中。此部分不起作用。
有没有人有任何有用的提示或看到我对表达式操作如何工作的误解?提前谢谢你!
名称默认为此处(1); // 下面的基本需求 - 但仅适用于单列名称 collist = { "Col 1", "Col 2", "Col 3", "Col 4", "Col 5" };新列表 = {}; for( i = 1, i <= N items(collist), i++, // 清空 arg 以按名称识别列 name_arg = Expr( column() ); insert into( name_arg, eval insert( collist[i] ) ); // 结果:column("Col 1"), or other cols inserted <-- Working as intended show( name_arg ); // 显示成功插入到的 insert into( newlist, insert into( name_arg, eval insert( collist[i] ) ) ); // 嵌套的 insert into 不起作用 // 需要将第一个 insert into 的结果插入到 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++, // 清空 arg 以按名称标识列 name_arg = Expr( column() ); // 对于下面的任何匹配,结果必须添加到 newlist2 // Regex works, as per regex101.com if( !contains( collist2[a], "*" ), insert into( name_arg2, eval insert( collist2[a] ) ), // 单项插入,参考基本需求上面的流程 insert into( name_arg2, eval insert( regex( collist2[a], "^(.*)\*(.*)$", "\1" ) ) ); // 分开第一组插入列() insert into( name_arg2, eval insert( regex( collist2[a], "^(.*)\*(.*)$", "\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") ,列(“Col 3”),列(“Col 4”),列(“Col 5”),列(“Col 1”)*列(“Col 2”),列(“Col 2”)*列("Col 4"), column("Col 5")*column("Col 5") };