首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R- grepl变量比较

R- grepl变量比较
EN

Stack Overflow用户
提问于 2014-01-30 03:44:21
回答 1查看 470关注 0票数 1

只要帮我处理一下grepl,它就让我头疼了!

我有两个变量:

代码语言:javascript
复制
str1<-"AAV.L"
str2<-"AAV2.L"

我想要做的是检查str2是否是str1的扩展(在本例中是这样的)。基本上,这里str2有一个额外的"2"在它的名字。

理想情况下,解决方案如下:

代码语言:javascript
复制
grepl(str1,paste0(str2,...))

但我不知道如何解释. in str1。变量的长度也不一样,所以我不能只检查str1的前3个字符是否存在于str2中。

有人有什么想法吗?

谢谢!

编辑-澄清。

基本上,“扩展”,我的意思是,如果一个变量包含完全相同的字母,更多,以相同的顺序。因此,上面的示例AAV.LAAV2.L将匹配,因为它包含AAV..L。但是,它不必是这样的,它应该与REWRREWRLE相匹配,也就是REWR..

所以c("AAV.LE", "BAAV.L","AABV.L","AAV..L","ABCAV.L"),没有人能比得上。如果我把比赛的规则写成通俗易懂的话,那就是:

str2str1开始还是str2str1的任何子集开始,以其他子集结束?

我已经看过agrep,但它匹配得太不准确了。例如,AAV.LAAV2.L匹配很好,但是ADDAPUAD也匹配,这是不正确的!我知道我可以指定max.distance,但是有些字符串可能是ADDADDDDDDDDD,这使得设置这个值不太可能。

如果这有帮助的话请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2014-01-30 04:07:27

您可以在放置grepl之前删除点扩展。

代码语言:javascript
复制
str1 <- sub("\\.[[:alnum:]]+$", "", str1);
## AAV

str2 <- sub("\\.[[:alnum:]]+$", "", str2);
## AAV2

注意:这是一种删除文件扩展名的方法。它不会删除任何其他出现的点字符。它的工作方式是替换一个句点的出现,后面跟着字母数字字符,然后从字符串的末尾进行搜索。它用空("")字符串替换它。

代码语言:javascript
复制
str3 <- "A.A.V.L"
str3 <- sub("\\.[[:alnum:]]+$", "", str3);
## A.A.V

然后,使用grepl

代码语言:javascript
复制
grepl(str1, str2)
## TRUE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21447408

复制
相关文章

相似问题

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