我有一组数据,我需要添加多个额外的列来对现有数据进行排名。我这样做是通过一次添加一个额外的列,但我希望通过将列作为字符向量传递更有效的方式?这是一个简单的例子:
cols <- c("x", "y")
dt[, cols := lapply(.SD, function(x) rank(x, ties.method = "min")), .SDcols = cols]
排名方法在所有情况下都是相同的,所以我希望使用像
这样的东西static final
答案 0 :(得分:3)
我们可以使用paste
来创建新变量
dt[, paste0("rank_", cols) := lapply(.SD, rank, ties.method = "min"), .SDcols = cols]