una - nombre filas en r
¿Cómo referirse a un nombre de variable con espacios? (3)
Algo similar se solicitó en la lista de correo ggplot2 y Mehmet Gültaş vinculado a esta publicación. Otra forma de usar cadenas para construir su llamada ggplot es a través de la función aes_strings
. Tenga en cuenta que todavía tiene que poner comillas invertidas dentro de las comillas para que la cosa funcione con variables con espacios.
library(ggplot2)
names(mtcars)[1] <- "em pi dzi"
ggplot(mtcars, aes_string(x = "cyl", y = "`em pi dzi`")) +
theme_bw() +
geom_jitter()
En ggplot2
, ¿cómo me refiero a un nombre de variable con espacios?
¿Por qué qplot()
y ggplot()
rompen cuando se usan en nombres de variables con comillas?
Por ejemplo, esto funciona:
qplot(x,y,data=a)
Pero esto no lo hace:
qplot("x","y",data=a)
Pregunto porque a menudo tengo matrices de datos con espacios en el nombre. Por ejemplo, "Ingreso del Estado". ggplot2 necesita marcos de datos; ok puedo convertir Así que me gustaría probar algo como:
qplot("State Income","State Ideology",data=as.data.frame(a.matrix))
Que falla
Mientras que en los gráficos base R, yo haría:
plot(a.matrix[,"State Income"],a.matrix[,"State Ideology"])
Lo que funcionaría.
¿Algunas ideas?
Respuesta: porque ''x'' y ''y'' se consideran un vector de caracteres de longitud-uno, no un nombre de variable. Aquí descubrirá por qué no es inteligente usar nombres de variables con espacios en R. O cualquier otro lenguaje de programación para esa materia.
Para referirse a nombres de variables con espacios, puede usar cualquiera de las soluciones hadleys
a.matrix <- matrix(rep(1:10,3),ncol=3)
colnames(a.matrix) <- c("a name","another name","a third name")
qplot(`a name`, `another name`,data=as.data.frame(a.matrix)) # backticks!
o lo mas formal
qplot(get(''a name''), get(''another name''),data=as.data.frame(a.matrix))
Este último se puede utilizar en construcciones donde se pasa el nombre de una variable como una cadena, por ejemplo, en una construcción de bucle:
for (i in c("another name","a third name")){
print(qplot(get(i),get("a name"),
data=as.data.frame(a.matrix),xlab=i,ylab="a name"))
Sys.sleep(5)
}
Aún así, la mejor solución es no usar nombres de variables con espacios.
Usar get
no es más "formal", en realidad yo diría lo contrario. Como dice la ayuda de R ( help("`")
), casi siempre se puede usar un nombre de variable que contenga espacios, siempre que se indique . (Normalmente, con un retroceso, como ya se sugirió.)