将列添加到数据表,其值是所有现有列的函数

时间:2014-10-24 16:08:44

标签: r data.table

假设我有以下数据表:

 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)]

但是让我说我​​事先不知道列 - 我只是想使用所有列值作为参数。在这种情况下我如何调用我的函数?

1 个答案:

答案 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