En Stata, el comando lookfor
ofrece una forma rápida de buscar variables en un conjunto de datos (y busca tanto nombres de variables como etiquetas). Entonces, lookfor education
encuentra rápidamente variables relacionadas con la educación. ¿Hay una función de acceso directo equivalente en R?¿Existe una forma rápida de buscar variables en R?
Respuesta
Puede simplemente grep
el data.frame para la información necesaria. Entonces obtendrá mucha más información que simplemente la lista de nombres de variables con las que alguien está emparejado. También puede usar expresiones regulares, mejorando así sus capacidades de búsqueda. Aquí está el ejemplo de una función que hace lo que quiere (sólo funciona con hoja.de.datos):
lookfor <-
function (pattern, data, ...)
{
l <- lapply(data, function(x, ...) grep(pattern, x, ...))
res <- rep(FALSE, ncol(data))
res[grep(pattern, names(data), ...)] <- TRUE
res <- sapply(l, length) > 0 | res
names(res) <- names(data)
names(res)[res]
}
Primero grep cada columna, entonces yo grep los nombres de columna. Luego solo guardo información sobre si grep coincide con algo y lo grabo para cada columna por separado. En lugar de ...
puede pasar cualquier argumento al grep
. Si lo omites, esta función hará una simple coincidencia de cadenas.
Aquí se muestra un ejemplo:
> dt<- data.frame(y=1:10,x=letters[1:10],a=rnorm(10))
> lookfor("a",dt)
[1] "x" "a"
¿Qué tal esto como una oneliner la que corro al comienzo de una sesión:
lkf <- function(d,p) names(d)[grep(p,names(d))]
donde d
es el nombre de su hoja.de.datos y p
es el patrón.
Así
d <- data.frame(a=letters[1:10],b=1:10,c=month.name[1:10])
lkf(d,'c')
# [1] "c"
Y aquí es una versión que no requiere que citar los nombres de las variables
lookfor <- function(string_to_find, data){
# Extract the arguments and force conversion to string
pars <- as.list(match.call()[-1])
data.name <- as.character(pars$data)
var <- as.character(pars$string_to_find)
# Regular expression search through names
result <- names(data)[grep(var, names(data))]
if(length(result) == 0) {
warning(paste(var, "not found in", data.name))
return(NULL)
}
else {
return(result)
}
}
Si sólo tiene que buscar por la lista de variables para encontrar la que están buscando, entonces es posible utilizar la función de finalización de código en RStudio (v0.99 en adelante). Simplemente comience a escribir y obtendrá una lista de posibles coincidencias. Entonces, en su caso escriba education$
y aparecerá una lista de variables contenidas en el marco de datos. Desplácese por estos y seleccione el que desee.
- 1. La forma más rápida de buscar una lista en python
- 2. ¿Existe una forma rápida de dibujar texto en WPF
- 3. ¿Existe una "forma más rápida" de construir cadenas en Java?
- 4. ¿Existe una forma incorporada de cambiar dos variables en C
- 5. ¿Forma rápida de determinar si existe un PID en (Windows)?
- 6. ¿Cuál es una forma más rápida de buscar un valor en una lista de tuplas?
- 7. ¿Cuál es la forma más rápida de buscar una lista <T> en varias propiedades?
- 8. La forma más rápida de verificar si existe un objeto
- 9. En PHP, ¿qué es una forma rápida de buscar en una matriz los valores que contienen una subcadena?
- 10. ¿Una forma barata/rápida de hash Bitmaps?
- 11. Variables globales en R
- 12. Variables estáticas en R
- 13. ¿Existe una forma más rápida de integrar una rama de características?
- 14. Variables el revestimiento en R
- 15. Forma rápida de determinar si existe un campo en una tabla ORACLE
- 16. ¿Existe una forma más rápida de dar soporte al selector ": antes" y ": después" en IE7?
- 17. ¿Existe alguna forma más rápida de convertir un número en un nombre?
- 18. Bucle en variables de cadena en R
- 19. Forma rápida de decodificar una imagen JPEG
- 20. Dibuje una línea antialiased de forma rápida
- 21. ¿Existe una forma más rápida que lineal de encontrar puntos finales de una condición booleana en numpy?
- 22. reforma de datos (una forma más rápida)
- 23. ¿Existe una forma más rápida de obtener datos de producción de Heroku Than Taps?
- 24. Buscar el índice de una entrada de lista en R
- 25. ¿Forma más rápida de dividir una cadena y contar caracteres usando R?
- 26. Una forma rápida de seleccionar una línea en netBeans
- 27. Una forma rápida de eliminar una línea en netBeans
- 28. Forma rápida de detectar si existe una tabla o vista DataContext
- 29. ¿Qué es una forma rápida de probar para ver si existe un archivo?
- 30. Variables de enlace en R DBI
Votando para migrar a stackoverflow pero puedes combinar el comando 'which()' con el comando 'names()' para esto si estás trabajando con un marco de datos, o 'colnames()' si estás trabajando con una matriz – Macro