你好,我正在编写一个脚本来自动化我的表操作(主要是添加带有匹配公式的新列),用于具有可变数量的唯一列内容和最终输出的数据。
我编写了一个脚本来识别 :SampleID 中的唯一内容(保存在 Init_IDs 中)并提示用户在保存在 New_IDs 中的弹出窗口中重命名它们,然后我可以使用标准匹配公式创建我的新列:
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
Init_IDs[1], New_IDs[1],
Init_IDs[2], New_IDs[2],
Init_IDs[3], New_IDs[3],
Init_IDs[4], New_IDs[4],
Init_IDs[5], New_IDs[5],
Init_IDs[6], New_IDs[6],
)
)
);这个公式适用于我的测试数据集,其中 New_IDs 的大小为 6,但这会改变,所以我想使用 For 循环使其灵活,这是我尝试过的,但它不起作用:
New Column( "Sample",
Character,
Nominal,
Formula(
Match( :SampleID,
"C1", "Constant 1",
"C2", "Constant 2",
) +
For( i = 1, i <= N Items( New_IDs ), i++,
Match( :SampleID,
Init_IDs[i], New_IDs[i],
)
)
),
);我已经检查过 N Items (New_IDs) 生成值 6。 我单独尝试了 For 循环,没有与其他 Match 公式结合使用,这也不起作用,因此虽然中间的“+”最终可能是一个问题,但主要问题似乎是我的 for 循环本身。
我还尝试使用 If 语句而不是 Match 公式对其进行简化,但也没有运气:
New Column( "Sample",
Character,
Nominal,
Formula(
For( i = 1, i <= 6, i++,
If( :SampleID == Init_IDs[i],
New_IDs[i]
)
)
)
);