以數字開頭的列名我有一個代碼,其中的列名以數字首字母開頭,因此代碼認為該名稱代表日期。我對列進行了重命名以解決這個問題,但它很醜陋。我還發現,將表示名稱的物件包裝在 Char(obj) 語句中也不起作用。關於如何更好地處理這個問題有什麼建議嗎?
dt = Current Data Table();
cnmes = dt << get column names( "string" );
For( j = 1, j <= N Items( cnmes ), j++,
if (Starts With( cnmes[j], "1" ) == 1 | Starts With( cnmes[j], "2" ) == 1 | Starts With( cnmes[j], "3" ) == 1| Starts With( cnmes[j], "4" ) == 1 | Starts With( cnmes[j], "5" ) == 1 | Starts With( cnmes[j], "6" ) == 1 | Starts With( cnmes[j], "7" ) == 1 | Starts With( cnmes[j], "8" ) ==1 | Starts With( cnmes[j], "9" ) == 1 | Starts With( cnmes[j], "0") == 1 ,
Column(cnmes[j]) << set name("_"||cnmes[j])
) );
自動化和腳本回覆:以數字開頭的列名您可以使用 Column() 函數來引用「cnmes」列名清單中的列名。或者,如果您對列名進行硬編碼,請使用以下命令
// Report snapshot: Big Class - Graph Builder
Data Table( "Big Class" ) << Graph Builder(
Variables( X( :"1height"n ), Y( :"1height"n ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);

names default to here(1);
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
// Change column name: height → 1height
try(Data Table( "Big Class" ):height << Set Name( "1height" ));
// Change column name: weight → 3weight
try(Data Table( "Big Class" ):weight << Set Name( "3weight" ));
cnmes = dt << get column names( "string" );
Graph Builder(
Variables( X( column(cnmes[5])), Y( column(cnmes[4]) ) ),
Elements( Points( X, Y, Legend( 6 ) ), Smoother( X, Y, Legend( 7 ) ) )
);
回覆:以數字開頭的列名您看到這些問題是因為名稱必須以字母或底線開頭 腳本指南 > JSL 構建塊 > JSL 語法規則 > 名稱。根據您正在做的事情,您可能想要重新命名它們(請參閱 txnelson 的選項),對於重命名,您可以例如使用正規表示式進行重新命名,如下所示
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(0),
Compress File When Saved(1),
New Column("1col", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("13col", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("0col", Numeric, "Continuous", Format("Best", 12), Set Values([])),
New Column("Column 4",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([])
)
);
colnames = dt << Get Column Names("String");
For Each({colname}, colnames,
newname = Regex(colname, "^\d+.+", "_\0");
If(!IsMissing(newname),
Column(dt, colname) << Set Name(newname);
);
);