我有一个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