我知道有很多相关的文章,但是找不到任何有帮助的文章。我想做的很简单。
我要根据列名中是否存在字母来选择(或删除)列。
library(tibble)
library(stringr)
library(dplyr)
xy <- tibble("x" = 1:5, "123" = 6:10, "x123" = 11:15)
#does not have expected output
> xy %>% select(-matches("[:alpha:]"))
# A tibble: 5 x 3
x `123` x123
<int> <int> <int>
1 1 6 11
2 2 7 12
3 3 8 13
4 4 9 14
5 5 10 15
但是,如果我使用str_view_all
,则所有结果均符合预期,但无法与dplyr
辅助函数matches
一起用于选择列。
str_view_all(x, "[:alpha:]")
我正在寻找使用stringr
和dplyr
的解决方案。看来这应该非常简单。
答案 0 :(得分:1)
[:alpha:]
是POSIX字符类,仅在带括号的表达式内有效。因此,您需要额外的一对括号:
xy <- tibble("x" = 1:5, "123" = 6:10, "x123" = 11:15)
xy %>% select(-matches("[[:alpha:]]"))
结果:
# A tibble: 5 x 1
`123`
<int>
1 6
2 7
3 8
4 9
5 10