【发布时间】:2021-04-16 16:11:11
【问题描述】:
我正在使用 R 中的 sub 函数来替换任何不以 M 开头的字符串或不以 T814 开头的字符串。我有下面的代码成功地保留了任何以 M 开头的字符串,但它没有保留以 T814 开头的字符串。
attempt2$dx3 <- sub('^[^M].*| ^[^T814].*', "", attempt2$dx3)
有什么办法可以调整代码只保留我感兴趣的字符串?
这是我所拥有的一个例子:
attempt2 <- data.frame(dx2 = c("M1234", "T8142", "M745", "T8149", "R234"),
dx3 = c("M356", "T1142", "M745", "T8146", "G234"))
以及我想要的:
attempt2 <- data.frame(dx2 = c("M1234", "T8142", "M745", "T8149", ""),
dx3 = c("M356", "", "M745", "T8146", ""))
【问题讨论】:
-
对于正则表达式中的“不是(多个字符串)”,我相信您的选择是(a)使用否定前瞻as shown here,或者(b)匹配多字符串然后否定。
-
你真的不想要
attempt2$dx3 <- sub('(?s)^(?!M|T814).*', "", attempt2$dx3, perl=TRUE),是吗?