首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么regexes在dplyr诉grep()中的作用不同?

为什么regexes在dplyr诉grep()中的作用不同?
EN

Stack Overflow用户
提问于 2018-06-11 10:41:40
回答 1查看 44关注 0票数 1

我想从我的数据框架中选择几个变量,并认为我可以这样做:

代码语言:javascript
复制
var1<-rnorm(10)
var2<-rnorm(10)
var3<-rnorm(10)
var4<-rnorm(10)
df<-data.frame(var1, var2, var3, var4)
library(dplyr)
df %>% 
  select(ends_with('[2-3]'))

但没什么回报。因此,我比较了grep()和grep()是如何工作的,并且工作得很好。

代码语言:javascript
复制
test<-seq(1,10,1)
grep('[2-3]', test)

为什么ends_with()不实现类似于grep()的正则表达式。我遗漏了什么?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-11 10:47:42

您可以使用来自matchestidyselect来解决这个问题。

代码语言:javascript
复制
library(dplyr)
df %>% 
  select(matches('[2-3]')) #or '[23]'
#output
          var2        var3
1   1.51178117  0.91897737
2   0.38984324  0.78213630
3  -0.62124058  0.07456498
4  -2.21469989 -1.98935170
5   1.12493092  0.61982575
6  -0.04493361 -0.05612874
7  -0.01619026 -0.15579551
8   0.94383621 -1.47075238
9   0.82122120 -0.47815006
10  0.59390132  0.41794156

matches():匹配正则表达式

所有其他select_helpers都使用文字字符串。

编辑:根据@James的评论:

为了确保regex只获取变量末尾的数字,应该使用表达式'[2-3]$',其中$表示字符串的结尾。

代码语言:javascript
复制
df %>% 
  select(matches('[2-3]$'))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50795872

复制
相关文章

相似问题

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