按名称排除列

时间:2016-03-03 06:48:19

标签: r

这是我的样本数据框

DF
x.a.p   y.b.l    x.a.pl    y.b.c   z.d.ce

这些是数字列。如何从DF列中排除哪些名称以.p.l结尾 我尝试使用grep然后subset找到这些列,但它没有用。 感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我们可以使用grep

DF[!grepl('\\.(p|l)$', names(DF))]

数据

DF <- data.frame(x.a.p= 1:5, y.b.l= 6:10, x.a.pl= 11:15, 
             y.b.c= 16:20, z.d.ce = 21:25)

答案 1 :(得分:0)

您可以将strsplit与参数fixed = TRUE一起使用,以便不将分割字符串视为正则表达式。

names_df <- c("x.a.p", "y.b.l", "x.a.pl", "y.b.c", "z.d.ce")

vapply(names_df, function(x) {
  s <- strsplit(x, ".", fixed = TRUE)[[1]][3] 
  s == "l" || s == "p"
  }, TRUE)