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

使用tidyverse的separate_rows拆分含*字符列时出现列不存在错误

解决separate_rows拆分含*字符列的错误问题

你的错误根源有两个:

  • separate_rows()的第二个参数被你当成了分隔符,但实际上这个位置是用来指定额外要拆分的列名的,分隔符需要通过sep参数传递
  • *是正则表达式中的特殊元字符(表示匹配前一个元素0次或多次),直接作为分隔符会被正则引擎解析为特殊规则,而非普通字符

正确的两种实现方式

方式1:转义特殊字符

通过\\*将*转义为普通字符,作为正则分隔符:

library(tidyverse)
df <- data.frame('Z' = c(1,2), 'var'= c('01*02*03','01*02'))

df %>% separate_rows(var, sep = "\\*")

方式2:使用fixed模式强制匹配普通字符

设置fixed=TRUE,让函数忽略正则规则,直接把*当作普通分隔符处理:

df %>% separate_rows(var, sep = "*", fixed = TRUE)

两种方法都会得到预期结果:

Z var
1 1 01
2 1 02
3 1 03
4 2 01
5 2 02

内容的提问来源于stack exchange,提问作者Rubén Pérez Sanz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 14:27:02