加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 基于正则表达式模式从向量中排除元素

发布时间:2020-12-14 06:31:58 所属栏目:百科 来源:网络整理
导读:我有一些数据要使用R中的正则表达式进行清理. 很容易找到如何获取包含某些模式的元素,或者不包含某些单词(字符串),但我无法找到如何排除包含模式的单元格. 我怎么能用一般函数只保留那些不包含PATTERN的向量的元素? 我不想举一个例子,因为这可能会导致人们
我有一些数据要使用R中的正则表达式进行清理.

很容易找到如何获取包含某些模式的元素,或者不包含某些单词(字符串),但我无法找到如何排除包含模式的单元格.

我怎么能用一般函数只保留那些不包含PATTERN的向量的元素?

我不想举一个例子,因为这可能会导致人们使用其他(虽然通常很好)的方式而不是预期的方式回答:基于正则表达式排除.无论如何:

如何排除包含以下任何字符的所有元素:
“pyfgcrl

vector <- c("Cecilia","Cecily","Cecily's","Cedric","Cedric's","Celebes","Celebes's","Celeste","Celeste's","Celia","Celia's","Celina")

在这种情况下,结果将是一个空向量.

编辑:从评论中,经过一些测试,我会发现我的建议不正确.

这是两个正确的解决方案:

vector[!grepl("['pyfgcrl]",vector)]                    ## kohske
grep("['pyfgcrl]",vector,value = TRUE,invert = TRUE) ## flodel

如果他们中的任何一个想重新发帖并接受他们的回答,我很乐意在这里删除我的.

说明

您正在寻找的一般功能是grepl.从grepl的帮助文件:

grepl returns a logical vector (match or not for each element of x).

此外,您应该阅读正则表达式的帮助页面,其中描述了哪些字符类.在这种情况下,您创建一个字符类[‘pyfgcrl],它表示要查找方括号中的任何字符.然后你可以用这个来否定这个!

所以,到目前为止,我们有一些看起来像:

!grepl("['pyfgcrl]",vector)

为了得到你想要的东西,你像往常一样分组.

vector[!grepl("['pyfgcrl]",vector)]

对于@flodel提供的第二个解决方案,grep默认返回匹配的位置,而value = TRUE参数允许您返回实际的字符串值. invert = TRUE表示返回未匹配的值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读