ggplot2, aes เทียบกับ aes_string

Sep 13 2020

ดังนั้นผมจึงจำเป็นต้องเปลี่ยนaesด้วยเนื่องจากความล้มเหลวaes_stringrcmdcheck()

ต้นฉบับ:

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

ความสับสนของฉันคือเกี่ยวกับการและB Cฉันได้รับอนุญาตให้ใส่เครื่องหมายคำพูดรอบ ๆ พวกเขาเนื่องจากอยู่ในpmaxฟังก์ชันหรือไม่? ชอบมาก:

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

ด้านล่างเป็นวิธีแก้ปัญหาอื่นหรือไม่:

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

แก้ไข:

ตรวจสอบข้อผิดพลาด R CMD คือว่าไม่มีผลผูกพันทั่วโลกสำหรับตัวแปรA, และBC

คำตอบ

Oliver Sep 14 2020 at 06:02

ความแตกต่างระหว่างaesและaes_stringเป็นเรื่องง่ายมากที่aes_stringจะแปลความหมายของสตริงที่อธิบายอาร์กิวเมนต์ เช่น. งานต่อไปนี้

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

นอกจากนี้ยังมีการบันทึกไว้ในhelp(aes_string)หน้า

aes_ และ aes_string กำหนดให้คุณต้องระบุอินพุตอย่างชัดเจนด้วย "" สำหรับ aes_string () หรือด้วยเครื่องหมายคำพูดหรือ ~ สำหรับ aes_ ()

แต่ตามที่ MrFlick ระบุไว้ในความคิดเห็นฟังก์ชันเหล่านี้ไม่ได้รับการสนับสนุนทั้งหมดซึ่งฉันเชื่อว่าหมายความว่าฟังก์ชันเหล่านี้จะถูกเก็บไว้เพื่อความเข้ากันได้ แต่ไม่สนับสนุนการใช้งาน