我有一個data.table,我想在某些列上執行相同的操作。這些列的名稱在字符向量中給出。在這個特定的例子中,我想將所有這些列乘以-1。如何將相同的功能應用於data.table中的每個指定列
有些玩具的數據和矢量指定相關列:
library(data.table)
dt <- data.table(a = 1:3, b = 1:3, d = 1:3)
cols <- c("a", "b")
現在我做這種方式,遍歷的特徵向量:
for (col in 1:length(cols)) {
dt[ , eval(parse(text = paste0(cols[col], ":=-1*", cols[col])))]
}
有沒有辦法做到這直接沒有for循環?
另一種方法是使用'set'和'for-loop'。我懷疑它會更快。 – Arun
@阿倫我做了一個編輯。這是你的意思嗎?我之前沒有使用'set'。 – Frank
@弗蘭克,非常!它避免了'.SD'的創建。即使對於這個特定的操作,.SD不應該花費太多,因爲它不是爲每個'by'創建的。但是,我仍然喜歡'設置'這個問題。 – Arun