str_detect regular punct regex r grep dplyr

regex - regular - str_detect r



Seleccionar columnas segĂșn la coincidencia de cadena-dplyr:: select (4)

Basado en la respuesta de Piotr Migdals, quiero dar una solución alternativa que permita la posibilidad de un vector de cadenas:

myVectorOfStrings <- c("foo", "bar") matchExpression <- paste(myVectorOfStrings, collapse = "|") # [1] "foo|bar" df %>% select(matches(matchExpression))

Haciendo uso del operador regex OR ( | )

Tengo un marco de datos ("datos") con montones y montones de columnas. Algunas de las columnas contienen una determinada cadena ("search_string").

¿Cómo puedo usar dplyr::select() para darme un subconjunto que incluya solo las columnas que contienen la cadena?

Lo intenté:

# columns as boolean vector select(data, grepl("search_string",colnames(data))) # columns as vector of column names names select(data, colnames(data)[grepl("search_string",colnames(data))])

Ninguno de los dos trabaja.

Sé que select() acepta vectores numéricos como sustitutos de columnas, por ejemplo:

select(data,5,7,9:20)

Pero no sé cómo obtener un vector numérico de ID de columnas de mi expresión grepl() .


Dentro del mundo dplyr , intente:

select(iris,contains("Sepal"))

Vea la sección Selección en ?select starts_with para muchos otros ayudantes como starts_with , ends_with , etc.


No es necesario usar select solo use [ lugar

data[,grepl("search_string", colnames(data))]

Probemos con el conjunto de datos de iris

>iris[,grepl("Sepal", colnames(iris))] Sepal.Length Sepal.Width 1 5.1 3.5 2 4.9 3.0 3 4.7 3.2 4 4.6 3.1 5 5.0 3.6 6 5.4 3.9