R 如何从包含特定字符串的数据帧中获取列号?
我有一个包含7列的数据框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",&
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