在data.table中逐行连接各列的值

Ste*_* J. 9 r data.table

我有这样的data.table:

x <- data.table(
       a = c( 1,     2),     
       b = c('foo', 'bar'))
Run Code Online (Sandbox Code Playgroud)

我想添加一个新列'key_',其中包含由'_'分隔的a和b的逐行连接值:

   a   b  key_
1: 1 foo 1_foo
2: 2 bar 2_bar
Run Code Online (Sandbox Code Playgroud)

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

x[, key_ := paste0(a, '_', b)]
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助!

Ric*_*ven 13

您可以使用do.call(),.SDcols用于提供列.

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

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