ggplot2, aes vs aes_string

Sep 13 2020

Quindi devo sostituire aescon a aes_stringcausa di un guasto rcmdcheck().

Originale:

        aes(
          x = A,
          y = pmax(B, C, na.rm = TRUE),
          ),

La mia confusione riguarda Be C. Posso inserire virgolette intorno a loro poiché sono all'interno della pmaxfunzione? Così:

        aes_string(
          x = "A",
          y = pmax("B", "C", na.rm = TRUE),
          ),

La seguente è ancora un'altra soluzione ?:

        aes(
          x = .data$A, y = pmax(.data$B, .data$C, na.rm = TRUE),
          ),

MODIFICATO:

Il Controllo errore di R CMD è che non v'è alcuna globale vincolante per le variabili A, Be C.

Risposte

Oliver Sep 14 2020 at 06:02

La differenza tra aese aes_stringè molto semplice, che aes_stringinterpreterà la stringa che descrive gli argomenti. Per esempio. i seguenti lavori

library(ggplot2)
data(mtcars)
ggplot(aes_string(x = "log(hp)", y = "1/log(mpg)", col = "factor(cyl)"), data = mtcars) + 
  geom_point() + 
  labs(col = 'cyl')

Anche questo è documentato nella help(aes_string)pagina

aes_ e aes_string richiedono di citare esplicitamente gli input con "" per aes_string (), o con virgolette o ~ per aes_ ().

Ma come ha affermato MrFlick nei commenti, queste funzioni sono tutte soft-deprecate, il che credo significhi che sono mantenute per compatibilità ma l'utilizzo è sconsigliato.