首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R替换字符串不像两个字符串?

R替换字符串不像两个字符串?
EN

Stack Overflow用户
提问于 2021-01-11 17:18:42
回答 2查看 38关注 0票数 0

我使用R中的子函数替换没有以M或开头的字符串,而不是以T814开头。下面的代码成功地保留了以M开头的任何字符串,但它没有保留以T814开头的字符串。

代码语言:javascript
复制
attempt2$dx3 <- sub('^[^M].*| ^[^T814].*', "", attempt2$dx3)

有没有办法调整代码,使其只保留我感兴趣的字符串?

这就是我所拥有的一个例子:

代码语言:javascript
复制
attempt2 <- data.frame(dx2 = c("M1234", "T8142", "M745", "T8149", "R234"),
                   dx3 = c("M356", "T1142", "M745", "T8146", "G234"))

我想要的是:

代码语言:javascript
复制
attempt2 <- data.frame(dx2 = c("M1234", "T8142", "M745", "T8149", ""),
                   dx3 = c("M356", "", "M745", "T8146", ""))
EN

回答 2

Stack Overflow用户

发布于 2021-01-11 17:36:32

使用str_detect

代码语言:javascript
复制
library(stringr)
library(dplyr)
attempt2 %>% 
   mutate(dx3 = replace(dx3, !str_detect(dx3, "^(M|T8146)"), ""))
票数 0
EN

Stack Overflow用户

发布于 2021-01-11 18:02:13

这里有一个方便的库:

代码语言:javascript
复制
library(inops)
attempt2 %out~% c("^M", "^T814") <- ""

这里,%out~%匹配与右侧指定的正则表达式不匹配的所有元素。然后,可以在行尾为该表达式分配替换值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65671581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档