r - 逐行连接 data.table 中的列之间的值

标签 r data.table

我有这样的 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/

相关文章:

r - 如何使用 R 中的元数据将语料库转换为 data.frame

r - 基于多列折叠 data.table

r - 修复 R 中返回栅格单元之间距离数据帧的函数瓶颈

r - 如何从列中获取数据

使用 r 中的 for 循环重新调整具有给定不同引用级别的许多变量

r - 根据规则对用户进行聚类或分桶

r - 数据表 fread 与其他目录中的 zip 文件,名称中包含空格

r - 按列模式和绑定(bind)行拆分 data.frame R

r - 二进制R热图仍显示渐变

R代码迭代