with - lines ggplot2 r
R: "Error de operador unario" del comando multiline ggplot2 (3)
Es el operador ''+'' al principio de la línea lo que hace que las cosas salgan volando (no solo que esté usando dos operadores ''+'' consecutivamente). El operador ''+'' se puede usar al final de las líneas, pero no al principio.
Esto funciona:
ggplot(combined.data, aes(x = region, y = expression, fill = species)) +
geom_boxplot()
El no:
ggplot(combined.data, aes(x = region, y = expression, fill = species))
+ geom_boxplot()
*Error in + geom_boxplot():
invalid argument to unary operator*
Tampoco puedes usar dos operadores ''+'', que en este caso ya has hecho. Pero para solucionar esto, tendrá que eliminar selectivamente aquellos al principio de las líneas.
Estoy usando ggplot2 para hacer una comparación en diagrama de caja de dos especies diferentes, como lo indica la tercera columna que se muestra a continuación:
> library(reshape2)
> library(ggplot2)
> melt.data = melt(actb.raw.data)
> head(actb.raw.data)
region expression species
1 CG -0.17686667 human
2 CG -0.06506667 human
3 DG 1.04590000 human
4 CA1 1.94093333 human
5 CA2 1.55023333 human
6 CA3 1.75800000 human
> head(melt.data)
region species variable value
1 CG human expression -0.17686667
2 CG human expression -0.06506667
3 DG human expression 1.04590000
4 CA1 human expression 1.94093333
5 CA2 human expression 1.55023333
6 CA3 human expression 1.75800000
Sin embargo, cuando ejecuto el siguiente código:
ggplot(combined.data, aes(x = region, y = expression, fill = species)) +
+ geom_boxplot() +
+ scale_fill_manual(values = c("yellow", "orange"))
+ ggtitle("Expression comparisons for ACTB")
+ theme(axis.text.x = element_text(angle=90, face="bold", colour="black"))
Me sale este error:
> ggplot(actb.raw.data, aes(x = region, y = expression, fill = species)) +
+ + geom_boxplot() +
+ + scale_fill_manual(values = c("yellow", "orange"))
Error in +geom_boxplot() : invalid argument to unary operator
> + ggtitle("ACTB expression in human vs. macaque")
Error in +ggtitle("ACTB expression in human vs. macaque") :
invalid argument to unary operator
> + theme(axis.text.x = element_text(angle=90, face="bold", colour="black"))
Error in inherits(x, "theme") : argument "e2" is missing, with no default
Esto también sucede cuando ejecuto usando la variable melt.data, para lo que sea que valga la pena. Alguien me puede ayudar a arreglar esto? He ejecutado este código con éxito antes con un conjunto de datos diferente que se formateó de forma idéntica, y no puedo entender qué está pasando mal aquí.
Esta es una molestia bien conocida al publicar comandos de líneas múltiples en R. (Puede obtener un comportamiento diferente cuando source()
un script al copiar y pegar las líneas, tanto con líneas múltiples como comentarios)
Regla: siempre coloque el ''+'' colgante al final de una línea para que R sepa que el comando está inacabado:
ggplot(...) + geom_whatever1(...) +
geom_whatever2(...) +
stat_whatever3(...) +
geom_title(...) + scale_y_log10(...)
No coloque el ''+'' colgante al principio de la línea, ya que hace que este Error in "+ geom_whatever2(...) invalid argument to unary operator"
Y, obviamente, no ponga "+" colgando en ambos extremos y comience ya que es un error de sintaxis. Entonces, aprenda el hábito de ser consistente: siempre ponga ''+'' al final de la línea.
cf. responder a "dividir código en varias líneas en un guión R"
Parece que podría haber insertado un +
extra al comienzo de cada línea, lo que R interpreta como un operador unario (como -
interpretado como negación, en lugar de resta). Creo que lo que funcionará es
ggplot(combined.data, aes(x = region, y = expression, fill = species)) +
geom_boxplot() +
scale_fill_manual(values = c("yellow", "orange")) +
ggtitle("Expression comparisons for ACTB") +
theme(axis.text.x = element_text(angle=90, face="bold", colour="black"))
Tal vez copie y pegue desde la salida de una consola R? La consola usa +
al comienzo de la línea cuando la entrada está incompleta.