我想从我的数据框架中选择几个变量,并认为我可以这样做:
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()是如何工作的,并且工作得很好。
test<-seq(1,10,1)
grep('[2-3]', test)为什么ends_with()不实现类似于grep()的正则表达式。我遗漏了什么?谢谢。
发布于 2018-06-11 10:47:42
您可以使用来自matches的tidyselect来解决这个问题。
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.41794156matches():匹配正则表达式
所有其他select_helpers都使用文字字符串。
编辑:根据@James的评论:
为了确保regex只获取变量末尾的数字,应该使用表达式'[2-3]$',其中$表示字符串的结尾。
df %>%
select(matches('[2-3]$'))https://stackoverflow.com/questions/50795872
复制相似问题