ggplot2, aes vs aes_string

Sep 13 2020

Jadi saya harus mengganti aesdengan aes_stringkarena gagal rcmdcheck().

Asli:

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

Kebingungan saya adalah tentang Bdan C. Apakah saya diizinkan untuk memberi tanda kutip di sekitar mereka karena mereka berada di dalam pmaxfungsi? Seperti:

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

Apakah di bawah ini adalah solusi lain ?:

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

DIEDIT:

R CMD Periksa kesalahan adalah bahwa tidak ada global yang mengikat untuk variabel A, Bdan C.

Jawaban

Oliver Sep 14 2020 at 06:02

Perbedaan antara aesdan aes_stringsangat sederhana, yang aes_stringakan menafsirkan string yang mendeskripsikan argumen. Misalnya. karya berikut

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

Ini juga didokumentasikan di help(aes_string)halaman

aes_ dan aes_string mengharuskan Anda untuk secara eksplisit mengutip input baik dengan "" untuk aes_string (), atau dengan kutipan atau ~ untuk aes_ ().

Tetapi seperti yang dinyatakan MrFlick dalam komentar, fungsi-fungsi ini semuanya tidak digunakan lagi, yang menurut saya berarti mereka disimpan untuk kompatibilitas tetapi penggunaan tidak disarankan.