您好,我正在尝试检索并准备列名称列表以保存在变量中以供稍后使用。 问题是 << Get Column Names() 将所有内容返回为字符串列表。 下面是我如何在每个项目字符串的开头添加“:”以及它的潜在用途。 还需要做更多的工作。
names default to here(1);
dt = current data table();
col_names = dt << Get Column Names( ); // retrieves all col names
col_list = {}; // list for holding col names
// loop formats names in way usable to be called on as cols, not strings
for( i = 1 , i <= N items( col_names ), i++,
list_item = ":" || list_item;
Insert Into( col_list, list_item );
);
dt << Ungroup Scripts( col_list ); // example usage另一个例子是将此列表用于以下内容:
拟合模型( Y( col_list ) ....
我得到什么:{“ColA”,“ColB”}
我想要什么:{:ColA,:ColB}
我浏览并找到了多个与此相关的线程,但是我没有偶然发现使用列名称作为函数的输入。有什么建议吗?
@蒂埃里_S & @jthi - 谢谢你们俩! eval() 就是我正在寻找的! 我知道该列是一个表达式,但我完全忘记了这个命令。
如果您想使用格式为 :colname 的列,您可以通过以下方式获取它们:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col_names = dt << Get Column Names(Continuous, "String");
// dt << Get Column Reference(); /* all references */
/* one option */
col_list1 = dt << Get Column Reference(col_names);
/* second option */
col_list2 = Transform Each({col_name}, col_names,
Name Expr(AsColumn(Column(dt, col_name))); /* Column() isnt necessary but makes it more robust */
);
show(col_list1, col_list2);
通常我将它们用作字符串,然后根据情况使用 Column() 或 As Column() (混合使用一些 Name Expr() )。
如果将其与 Eval() 结合起来,通常使用列名字符串列表就足够了。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Cities.jmp");
col_names = {"OZONE", "CO", "SO2", "NO", "PM10"};
//obj = dt << Cluster Variables(Y(:OZONE, :CO, :SO2, :NO, :PM10));
obj = dt << Cluster Variables(Y(Eval(col_names)));
col_list = Transform Each({col_name}, col_names,
Name Expr(AsColumn(Column(dt, col_name)));
);
obj = dt << Cluster Variables(Y(col_list)); /* wont work, see log for error */
/* Using Eval() and Eval Expr() */
cv_expr = EvalExpr(
obj = dt << Cluster Variables(Y(Expr(col_list)));
);
Eval(cv_expr);
/* using only Eval inside Y() should also work like earlier */
obj = dt << Cluster Variables(Y(Eval(col_list)));
你好,
不久前我也遇到了同样的问题。 解决方案很简单:您需要评估列表以返回一系列列。
dt << Ungroup Scripts( Eval (col_list ));
最好的,
TS