我有这样的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.您可以在那里提供任何名称或列号向量.