我有这样的 data.table:
x <- data.table(
a = c( 1, 2),
b = c('foo', 'bar'))
我想添加一个新列“key_”,其中包含由“_”分隔的 a 和 b 的逐行串联值:
a b key_
1: 1 foo 1_foo
2: 2 bar 2_bar
对于硬编码的情况,有一个简单的解决方案:
x[, key_ := paste0(a, '_', b)]
当要连接的列作为任意长的字符向量给出时,我如何在更通用的情况下实现这一点?
谢谢你的帮助!
最佳答案
您可以使用 do.call()
,使用 .SDcols
来提供列。
x[, key_ := do.call(paste, c(.SD, sep = "_")), .SDcols = names(x)]
.SDcols = names(x)
提供 x
的所有列。您可以在那里提供任何名称向量或列号。
关于r - 逐行连接 data.table 中的列之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46287324/