ggplot2, aes contre aes_string

Sep 13 2020

Je dois donc remplacer aespar en aes_stringraison d'un échec rcmdcheck().

Original:

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

Ma confusion concerne Bet C. Suis-je autorisé à mettre des guillemets autour d'eux puisqu'ils sont à l'intérieur de la pmaxfonction? Ainsi:

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

La solution ci-dessous est-elle encore une autre solution?:

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

ÉDITÉ:

L'erreur de vérification R CMD est qu'il n'y a pas de liaison globale pour les variables A, Bet C.

Réponses

Oliver Sep 14 2020 at 06:02

La différence entre aeset aes_stringest très simple, qui aes_stringinterprétera la chaîne qui décrit les arguments. Par exemple. les oeuvres suivantes

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

Ceci est également documenté sur la help(aes_string)page

aes_ et aes_string vous demandent de citer explicitement les entrées soit avec "" pour aes_string (), soit avec un guillemet ou ~ pour aes_ ().

Mais comme MrFlick l'a déclaré dans les commentaires, ces fonctions sont toutes dépréciées, ce qui, je pense, signifie qu'elles sont conservées pour des raisons de compatibilité, mais leur utilisation est déconseillée.