如何在dplyr::tibble中基于grep选择列
我有以下几点:如何在dplyr::tibble中基于grep选择列,r,dplyr,R,Dplyr,我有以下几点: library(tidyverse) set.seed(1) df <- data_frame(gene=LETTERS[seq( from = 1, to = 10 )], x1.control=runif(10),x2.control=runif(10),y1.control=runif(10),y2.control=runif(10)) 我想获取包含该字符串的列: # A tibble: 10 × 2 x1.control x2.control
library(tidyverse)
set.seed(1)
df <- data_frame(gene=LETTERS[seq( from = 1, to = 10 )], x1.control=runif(10),x2.control=runif(10),y1.control=runif(10),y2.control=runif(10))
我想获取包含该字符串的列:
# A tibble: 10 × 2
x1.control x2.control
<dbl> <dbl>
1 0.26550866 0.2059746
2 0.37212390 0.1765568
3 0.57285336 0.6870228
4 0.90820779 0.3841037
5 0.20168193 0.7698414
6 0.89838968 0.4976992
7 0.94467527 0.7176185
8 0.66079779 0.9919061
9 0.62911404 0.3800352
10 0.06178627 0.7774452
#一个tible:10×2
x1.控制x2.控制
1 0.26550866 0.2059746
2 0.37212390 0.1765568
3 0.57285336 0.6870228
4 0.90820779 0.3841037
5 0.20168193 0.7698414
6 0.89838968 0.4976992
7 0.94467527 0.7176185
8 0.66079779 0.9919061
9 0.62911404 0.3800352
10 0.06178627 0.7774452
如何使用grep和tidyverse实现这一点?您可以使用
dplyr::select_if
和grepl
。例如,要匹配列名包含“control”的所有列,请执行以下操作:
您可以使用
dplyr::select_if
和grepl
。例如,要匹配列名包含“control”的所有列,请执行以下操作:
您的示例
通缉\u col\u pat
也将匹配y1.control
和y2.control
?df%>%select(contains('control'))
或匹配
非文字正则表达式,或以
结束\u,以更严格的文字版本在此处工作。@neilfws您说得对。是的。请尝试df%>%select(匹配(粘贴0(“x”),“\\d+\\\”,通缉犯身份证))
您的示例通缉犯身份证身份证也将匹配y1.control
和y2.control
?df%>%select(包含('control'))
或匹配非文字正则表达式的,或者以
结尾,以获得一个更严格的文本版本,在这里可以使用。@neilfws你说得对。是的。请尝试df%>%选择(匹配(粘贴0(“x”),“\\d+\\\\”,通缉\u col\u pat))
也包含()
等。根据alistaire的评论也包含()
等。根据alistaire的评论
wanted_col_pat = 'control'
# A tibble: 10 × 2
x1.control x2.control
<dbl> <dbl>
1 0.26550866 0.2059746
2 0.37212390 0.1765568
3 0.57285336 0.6870228
4 0.90820779 0.3841037
5 0.20168193 0.7698414
6 0.89838968 0.4976992
7 0.94467527 0.7176185
8 0.66079779 0.9919061
9 0.62911404 0.3800352
10 0.06178627 0.7774452
library(dplyr)
df %>%
select_if(grepl("control", names(.)))