studio seleccionar matrices listas filas eliminar datos data comandos columnas r

seleccionar - Búsqueda insensible a mayúsculas de una lista en R



matrices en r studio (6)

¿Puedo buscar en una lista de caracteres una cadena en la que no sé cómo se encuadra la cadena? O más generalmente, estoy tratando de hacer referencia a una columna en un marco de datos, pero no sé exactamente cómo se encajonan las columnas. Mi idea fue buscar names(myDataFrame) entre mayúsculas y minúsculas para devolver la carcasa adecuada de la columna.


Con el paquete stringr , puede modificar el patrón con una de las funciones modificadoras incorporadas (consulte "modificadores"). Por ejemplo, ya que estamos haciendo coincidir una cadena fija (sin caracteres de expresión regular especiales) pero queremos ignorar el caso, podemos hacerlo

str_detect(colnames(iris), fixed("species", ignore_case=TRUE))

O puede usar el modifier (?i) que no distingue mayúsculas y minúsculas

str_detect(colnames(iris), "(?i)species")


El paquete de searchable se creó para permitir varios tipos de búsqueda dentro de objetos:

l <- list( a=1, b=2, c=3 ) sl <- searchable(l) # make the list "searchable" sl <- ignore.case(sl) # turn on case insensitivity > sl[''B''] $b [1] 2

Funciona con listas y vectores y hace mucho más que una simple coincidencia que no distingue entre mayúsculas y minúsculas.


Otra forma de lograr esto es usar str_which(string, pattern) del paquete stringr :

library("stringr") str_which(string = tolower(colnames(iris)), pattern = "species")


Si desea buscar un conjunto de cadenas en otro conjunto de cadenas, con mayúsculas y minúsculas, intente:

s1 = c("a", "b") s2 = c("B", "C") matches = s1[ toupper(s1) %in% toupper(s2) ]


Sugeriría la función grep() y algunos de sus argumentos adicionales que hacen que sea un placer usarla.

grep("stringofinterest",names(dataframeofinterest),ignore.case=TRUE,value=TRUE)

sin el value=TRUE del argumento value=TRUE , solo obtendrá un vector de posiciones de índice donde se produjo la coincidencia.


Suponiendo que no haya nombres de variables que difieran solo en el caso, puede buscar el nombre de su variable en minúsculas en tolower(names(myDataFrame)) :

match("b", tolower(c("A","B","C"))) [1] 2

Esto producirá solo coincidencias exactas, pero eso es probablemente deseable en este caso.