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
相关产品推荐
相关产品推荐

