0

I'm trying to find all variables names that end with "DE".

I'm already using this "grep" to find variables that start with "TR"

names(df )[ grep( "^(TR)" ,  names(df) ) ]

Is there a grep way to find the end pattern. Just an fyi, I know I can do it with "ends_with" but I'm trying to find a base r method.

names( df %>% select(ends_with( "DE" ) ) )  

Thanks.

H.Cheung
  • 855
  • 5
  • 12

1 Answers1

2

There is already endsWith in base R

names(df)[endsWith(names(df), "DE")]

-a reproducible example

> names(iris)[endsWith(names(iris), "Length")]
[1] "Sepal.Length" "Petal.Length"

Or with grep use the $ to specify the end of the string (also, with grep, we can use value = TRUE which returns the names instead of the numeric index

grep("DE$", names(df), value = TRUE)
# similar to
names(df)[grep("DE$", names(df)]

Or in a base R pipe

grep("DE$", names(df)) |>
   `[`(names(df), i = _)
grep("Length", names(iris)) |> 
  `[`(names(iris), i = _)
[1] "Sepal.Length" "Petal.Length"
akrun
  • 874,273
  • 37
  • 540
  • 662