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

