R 如何从包含特定字符串的数据帧中获取列号?

R 如何从包含特定字符串的数据帧中获取列号?,r,dataframe,R,Dataframe,我有一个包含7列的数据框df,还有一个包含多个字符串的列表z。 我想要一个只包含df中的列的数据帧,其中包含z中的sting df <- data.frame("a_means","b_means","c_means","d_means","e_mean","f_means","g_means") z <- c("a_m",&

我有一个包含7列的数据框
df
,还有一个包含多个字符串的列表
z
。 我想要一个只包含
df
中的列的数据帧,其中包含
z
中的sting

df <- data.frame("a_means","b_means","c_means","d_means","e_mean","f_means","g_means")
z <- c("a_m","c_m","f_m")
我尝试的是:

match(a, names(df)


组合搜索模式并将其用作
stringr::str_detect()
函数的模式

library(dplyr)
library(stringr)

df <- data.frame(a_means = "a_means",
                 b_means = "b_means",
                 c_means = "c_means",
                 d_means = "d_means",
                 e_means = "e_means",
                 f_means = "f_means",
                 g_means = "g_means"
                 )

z <- c("a_m","c_m","f_m")

z <- paste(z, collapse = "|")

df %>% select_if(str_detect(names(df), z))
#>   a_means c_means f_means
#> 1 a_means c_means f_means

库(dplyr)
图书馆(stringr)
df 1 a_表示c_表示f_表示
您可以使用:

df[,match(z, substring(colnames(df), 1, 3))]
以R为基数:

z <- paste(z, collapse = "|")
df[, grepl(z, names(df))]      # you could use grep as well

z您可以简单地执行以下操作:

库(dplyr)
df%>%
选择(包含(z))

查看
帮助(“以开始”)
。您还可以使用
starts\u with()
与起始前缀进行匹配。

您可以使用
选择
匹配
根据
z

库(dplyr)
df X.a_的意思是。X.c_的意思是。X.f_的意思是。
#>1 a_表示c_表示f_表示

聪明的解决方案!
df[,match(z, substring(colnames(df), 1, 3))]
z <- paste(z, collapse = "|")
df[, grepl(z, names(df))]      # you could use grep as well