我需要一個 JSL 循環來搜尋資料表的列標題,如果列標題中包含“(rad)”,我想將該列中的所有值乘以 180/pi,然後將列標題中的“(rad)”更改為“(deg)”。
我已經嘗試了所有能想到的方法——包括 chatGPT——但到目前為止還沒有成功。
- 使用 << 取得列名 取得所有列
- 使用 << 開始資料更新將表格設定為不更新
- 使用 For Each 迴圈遍歷它們
- 使用“包含”/“開頭為”/“結尾為”檢查他們的名字中是否包含 (rad)
- 使用 For Each Row 迴圈並將值變更為度數
- 我希望有更好的方法,但我不確定是否真的有,除非你希望創建新列並刪除舊列,因為我們不應該使用<<設定每個值,這使得操作和閱讀變得非常容易
- 應用公式(在 JMP18 中加入)可能會有效,但很難理解如何使用它
- 使用矩陣值是一個不錯的選擇,但對於每一行總是有效的,學習它總是一個好主意
- 使用替代和<<設定名稱重新命名列
- 讓表格再次更新使用<<結束資料更新
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(2),
Compress File When Saved(1),
New Column("Column 1", Numeric, "Continuous", Format("Best", 12), Set Values([., .])),
New Column("a (rad)", Numeric, "Continuous", Format("Best", 12), Set Values([1, .]))
);
colnames = dt << Get Column Names(Continuos, "String");
dt << Begin Data Update();
For Each({colname}, colnames,
If(Contains(colname, "(rad)"),
For Each Row(dt, Column(dt, colname)[] = Column(dt, colname)[] * 180 / Pi());
Column(dt, colname) << Set Name(Substitute(colname, "(rad)", "(deg)"));
)
);
dt << End Data Update();
Write();