ggplot2, aes vs aes_string

Sep 13 2020

Portanto, preciso substituir aespor aes_stringdevido a uma falha rcmdcheck().

Original:

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

Minha confusão é a respeito de Be C. Posso colocá-los entre aspas, já que estão dentro da pmaxfunção? Igual a:

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

A seguir é outra solução ?:

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

EDITADO:

O R CMD verificação de erro é que não há nenhum acordo global para as variáveis A, Be C.

Respostas

Oliver Sep 14 2020 at 06:02

A diferença entre aese aes_stringé muito simples, que aes_stringinterpretará a string que está descrevendo os argumentos. Por exemplo. os seguintes trabalhos

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

Isso também está documentado na help(aes_string)página

aes_ e aes_string requerem que você cite explicitamente as entradas com "" para aes_string (), ou com aspas ou ~ para aes_ ().

Mas, como MrFlick afirmou nos comentários, essas funções estão todas obsoletas, o que eu acredito que significa que elas são mantidas para compatibilidade, mas o uso é desencorajado.