ggplot2, aes vs aes_string

Sep 13 2020

Vì vậy tôi cần thay thế aesbằng aes_stringdo hỏng rcmdcheck().

Nguyên:

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

Sự nhầm lẫn của tôi là liên quan đến Bvà C. Tôi có được phép đặt dấu ngoặc kép xung quanh chúng vì chúng nằm trong pmaxhàm không? Như vậy:

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

Dưới đây có phải là giải pháp khác không ?:

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

ĐÃ CHỈNH SỬA:

R CMD Kiểm tra lỗi là không có ràng buộc toàn cầu cho các biến A, Bvà C.

Trả lời

Oliver Sep 14 2020 at 06:02

Sự khác biệt giữa aesvà aes_stringrất đơn giản, điều đó aes_stringsẽ diễn giải chuỗi đang mô tả các đối số. Ví dụ. những công trình sau đây

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

Điều này cũng được ghi lại trên help(aes_string)trang

aes_ và aes_string yêu cầu bạn trích dẫn rõ ràng các đầu vào bằng "" cho aes_string () hoặc bằng dấu ngoặc kép hoặc ~ cho aes_ ().

Nhưng như MrFlick đã nêu trong các nhận xét, các chức năng này đều không được dùng nữa, mà tôi tin rằng chúng được giữ lại để tương thích nhưng không khuyến khích sử dụng.