ggplot2, aes vs aes_string

Sep 13 2020

Also muss ich ersetzen aesmit aes_stringGrund versagt rcmdcheck().

Original:

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

Meine Verwirrung betrifft Bund C. Darf ich sie in Anführungszeichen setzen, da sie sich innerhalb der pmaxFunktion befinden? Wie so:

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

Ist das unten noch eine andere Lösung?:

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

EDITIERT:

Der R CMD prüfen Fehler ist , dass es keine globale ist für die Variablen verbindlich A, Bund C.

Antworten

Oliver Sep 14 2020 at 06:02

Der Unterschied zwischen aesund aes_stringist sehr einfach, der aes_stringdie Zeichenfolge interpretiert, die die Argumente beschreibt. Z.B. Folgendes funktioniert

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

Dies ist auch auf der help(aes_string)Seite dokumentiert

Bei aes_ und aes_string müssen Sie die Eingaben explizit entweder mit "" für aes_string () oder mit quote oder ~ für aes_ () zitieren.

Aber wie MrFlick in den Kommentaren feststellte, sind diese Funktionen alle veraltet, was meiner Meinung nach bedeutet, dass sie aus Kompatibilitätsgründen beibehalten werden, von der Verwendung jedoch abgeraten wird.