你好,我正在編寫一個腳本來自動化我的表操作(主要是添加帶有匹配公式的新列),用於具有可變數量的唯一列內容和最終輸出的數據。
我編寫了一個腳本來識別 :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]
)
)
)
);