ggplot2, aes vs aes_string

Sep 13 2020

Więc muszę wymienić aesz aes_stringpowodu awarii rcmdcheck().

Oryginalny:

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

Moje zamieszanie dotyczy Bi C. Czy mogę umieszczać wokół nich cudzysłowy, skoro znajdują się one wewnątrz pmaxfunkcji? Tak jak to:

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

Czy poniższe rozwiązanie jest jeszcze innym rozwiązaniem ?:

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

EDYTOWANO:

R CMD Sprawdź błędu jest to, że nie ma globalnego wiążące dla zmiennych A, Boraz C.

Odpowiedzi

Oliver Sep 14 2020 at 06:02

Różnica między aesi aes_stringjest bardzo prosta, która aes_stringzinterpretuje ciąg opisujący argumenty. Na przykład. następujące prace

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

Jest to również udokumentowane na help(aes_string)stronie

aes_ i aes_string wymagają, abyś jawnie cytował dane wejściowe za pomocą "" dla aes_string () lub za pomocą quote lub ~ dla aes_ ().

Ale jak stwierdził MrFlick w komentarzach, wszystkie te funkcje są nieaktualne, co moim zdaniem oznacza, że ​​są zachowywane ze względu na kompatybilność, ale użycie jest odradzane.