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

R data.table使用tstrsplit拆分字符串列转多行报错如何解决

代码问题说明

  • 拆分逻辑缺陷:val列原始值包含方括号、单引号冗余符号,直接按逗号拆分后得到的字符串会携带这些多余字符,无法得到干净的目标值。
  • 赋值长度不匹配:tstrsplit返回的列表长度等于拆分后单条字符串的最大元素个数,本次案例中最多可拆分出2个元素,因此返回长度为2的列表,但你仅指定了1个test列接收返回值,长度不匹配触发报错。

正确实现方法

推荐用strsplit+按id分组展开的方案,代码更简洁:

library(data.table)
# 示例数据
df = data.table(id = c(1, 2, 3), val=c("['hello', 'world']", "['hi']", "['so', 'there']"))
# 先去除冗余符号,再拆分后按id展开为多行
df2 <- df[, .(val = unlist(strsplit(gsub("[\\[\\]']", "", val), ", "))), by = id]

运行后得到的df2符合预期输出:

id   val
1:  1 hello
2:  1 world
3:  2    hi
4:  3    so
5:  3 there

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:15:01