从列中获取记录,其中子字符串字符向量与R中的列名匹配

时间:2017-03-18 13:37:54

标签: r list dataframe substring match

我想仅从包含子字符串的字符向量的一部分的列中获取行。示例如下:

我的表和列表

  

My Table的列标题由|分隔如下所示。只需键入多行

     

p1.abc.1 | p1.dce.2 | p1.efg.2 | p2.abc.2 | p2.dce.2 | p2.qar.3 |

     

我的清单如下   list_1 =(' abc',' def',' efg')

我的预期输出

  

返回与列表中的字符串部分匹配的所有列。

     

例如:   输出应返回以下列中的所有行

     

p1.abc.1 | p1.dce.2 | p1.efg.2 | p2.abc.2 | p2.dce.2 |

     

这里的任何帮助都会有很大的帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

## simulate the data frame with the given column names 

  df <- data.frame(p1.abc.1 = rnorm(10),
               p1.dce.2 = rnorm(10),
               p1.efg.2 = rnorm(10),
               p2.abc.2 = rnorm(10),
               p2.dce.2 = rnorm(10),
               p2.qar.3 = rnorm(10))

## your list 

list_1 <-  c('abc','def','efg') 

## sapply to loop, grep to find the matches
## unique and unlist to get the indeces 

z <- unique(unlist(sapply(list_1,function(x) grep( x, names(df)))))

## the desired output 
df[,z]