您好,我正在嘗試檢索並準備列名稱列表以保存在變量中以供稍後使用。 問題是 << 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