我需要一个 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();