多重匹配中`separate_wider_regex`发生了什么

问题描述 投票:0回答:1

我测试了以下脚本,但它显示错误,发生了什么?

我只想将 Y & 33 & N & A (Y33@N(A)) 保存到四个单独的列中。

library('tidyverse')

tta <- data.frame(res=c("Y33@N(A)","H5@O(B)"))
ttb <- tta %>%
    separate_wider_regex(res, patterns=c(resn="^[A-Za-z]+",
                                         resi="\\d+(?=@)",
                                         name="(?<=\\@)[a-zA-Z]+(?=\\()",
                                         chain="(?<=\\()[a-zA-Z]+(?=\\))"
                                         ),
                         too_few="debug")
r tidyverse
1个回答
0
投票

patterns
参数的在线文档描述中的“未命名组件将匹配,但不包含在输出中”的启发,this

ttb <- tta %>%
  separate_wider_regex(res, patterns=c(resn="^[A-Za-z]+",
                                       resi="\\d+",
                                       "\\@",
                                       name="[a-zA-Z]+",
                                       "\\(",
                                       chain="[a-zA-Z]+",
                                       "\\)$"
  ))

似乎为您提供了您想要的测试数据,尽管我怀疑您的用例可能需要更复杂的正则表达式。

ttb
# A tibble: 2 × 4
  resn  resi  name  chain
  <chr> <chr> <chr> <chr>
1 Y     33    N     A    
2 H     5     O     B    
© www.soinside.com 2019 - 2024. All rights reserved.