逐行连接data.table中列的值

时间:2017-09-18 20:03:29

标签: r data.table

我有这样的data.table:

x <- data.table(
       a = c( 1,     2),     
       b = c('foo', 'bar'))

我想添加一个新列&#39;键_&#39;其中包含由&#39; _&#39;分隔的a和b的逐行连接值:

   a   b  key_
1: 1 foo 1_foo
2: 2 bar 2_bar

对于硬编码的情况,有一个简单的解决方案:

x[, key_ := paste0(a, '_', b)]

当要连接的列作为任意长的字符向量给出时,如何在更通用的情况下实现这一点?

感谢您的帮助!

1 个答案:

答案 0 :(得分:9)

您可以使用do.call().SDcols来提供列。

x[, key_ := do.call(paste, c(.SD, sep = "_")), .SDcols = names(x)]

.SDcols = names(x)提供x的所有列。您可以在那里提供任何名称或列号的矢量。