假设我有以下数据表:
require(data.table)
dt <- data.table(a = LETTERS[c(1:4)], b = LETTERS[10:13])
即。 dt
是
a b
1: A J
2: B K
3: C L
4: D M
我想添加一个列merge
,以便dt
成为:
a b merge
1: A J A J
2: B K B K
3: C L C L
4: D M D M
这是一个应用于当前行向量的简单函数(在本例中为paste
)。现在,我当然可以做到
dt[, merge := paste(a, b)]
但是让我说我事先不知道列 - 我只是想使用所有列值作为参数。在这种情况下我如何调用我的函数?
答案 0 :(得分:3)
你可以尝试:
dt[, merge:=do.call(paste,.SD)]
dt
# a b merge
#1: A J A J
#2: B K B K
#3: C L C L
#4: D M D M
或者您可以使用Reduce
代替do.call