You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需for循环:使用data.table实现行复制与字符串拆分展开

高效拆分data.table中按分号分隔的列(无循环)

嘿,这个需求用data.table的原生语法就能轻松搞定,完全不需要写循环,效率拉满!

核心思路

利用data.table的分组操作结合向量化的字符串拆分函数,把每行中用分号分隔的V2列元素拆分成单独行,同时保留对应的V1值。

具体实现步骤

  1. 先构造你的原始数据表:
library(data.table)
DT <- data.table(V1 = c("A","B"), V2 = c("a;a;b","c"))
  1. 执行拆分操作(一行代码搞定):
DT[, .(V2 = unlist(strsplit(V2, ";"))), by = V1]

运行结果

执行后会直接输出你想要的格式:

V1 V2
1:  A  a
2:  A  a
3:  A  b
4:  B  c

为什么这个方法高效?

  • 全程都是向量化操作:strsplit一次性处理所有行的字符串,unlist把拆分后的列表展开成向量,没有循环带来的性能损耗。
  • data.table的by分组是底层优化过的,处理大数据量时比普通循环快几个数量级。

内容的提问来源于stack exchange,提问作者plausibly_exogenous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:50:17