我有这样的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)]
当要连接的列作为任意长的字符向量给出时,如何在更通用的情况下实现这一点?
感谢您的帮助!
答案 0 :(得分:9)
您可以使用do.call()
,.SDcols
来提供列。
x[, key_ := do.call(paste, c(.SD, sep = "_")), .SDcols = names(x)]
.SDcols = names(x)
提供x
的所有列。您可以在那里提供任何名称或列号的矢量。