str_extract在使用mutate删除开头的子字符串时生成NA

问题描述

我正在尝试使用以下正常工作的代码,仅在给定字符串的开头删除子字符串

    return sign | uint16((rv-0x38000000)>>13)

这将从字符串str_extract('CNABC',"(?<=CN)([^,]+)")) 删除CN 但是,当我在dplyr中使用此代码时,它会生成NA。有什么想法吗?

CNABC

谢谢。

解决方法

为什么不简单地将模式(如果在字符串的开头找到)替换为空字符串?如果找不到该模式,则sub不执行任何操作,与stringr::str_extract不同。

library(dplyr)

data.frame(A = c('CNABC','XNABC','CXABC')) %>% 
  mutate(B = sub("^CN","",A))
#      A     B
#1 CNABC   ABC
#2 XNABC XNABC
#3 CXABC CXABC