เมื่อฉันต้องการกรอง data.frame เช่นแยกแถวที่ตรงตามเงื่อนไขฉันต้องการใช้subset
ฟังก์ชั่น:
subset(airquality, Month == 8 & Temp > 90)
มากกว่า[
ฟังก์ชั่น:
airquality[airquality$Month == 8 & airquality$Temp > 90, ]
มีสองเหตุผลหลักสำหรับการตั้งค่าของฉัน:
ฉันพบว่ารหัสอ่านดีขึ้นจากซ้ายไปขวา แม้แต่คนที่ไม่รู้อะไรเลยเกี่ยวกับอาร์ก็สามารถบอกได้ว่า
subset
ข้อความข้างต้นกำลังทำอะไรอยู่เนื่องจากคอลัมน์สามารถเรียกได้ว่าเป็นตัวแปรใน
select
นิพจน์ฉันสามารถบันทึกการกดแป้นบางครั้งได้ ในตัวอย่างของฉันข้างต้นผมมีเพียงพิมพ์airquality
ครั้งด้วยแต่สามครั้งด้วยsubset
[
ดังนั้นฉันจึงมีความสุขใช้กับsubset
ทุกที่เพราะสั้นกว่าและอ่านได้ดีขึ้นแม้จะสนับสนุนความงามของมันให้กับนักเขียนโค้ด R ของฉัน แต่เมื่อวานโลกของฉันแตกสลาย ขณะอ่านsubset
เอกสารฉันสังเกตเห็นส่วนนี้:
คำเตือน
นี่คือฟังก์ชั่นอำนวยความสะดวกสำหรับการใช้งานแบบโต้ตอบ สำหรับการเขียนโปรแกรมจะเป็นการดีกว่าที่จะใช้ฟังก์ชั่นการแบ่งย่อยมาตรฐานเช่น [และโดยเฉพาะอย่างยิ่งการประเมินที่ไม่ได้มาตรฐานของชุดย่อยของอาร์กิวเมนต์สามารถมีผลที่ไม่คาดคิด
ใครช่วยอธิบายสิ่งที่ผู้แต่งหมายถึงได้บ้าง
ก่อนอื่นพวกเขาหมายถึง " เพื่อใช้แบบโต้ตอบ "? ฉันรู้ว่าเซสชันแบบโต้ตอบคืออะไรเมื่อเทียบกับสคริปต์ที่ทำงานในโหมดแบทช์ แต่ฉันไม่เห็นความแตกต่างที่ควรทำ
จากนั้นคุณช่วยอธิบาย " การประเมินผลที่ไม่ได้มาตรฐานของชุดย่อยของข้อโต้แย้ง " และทำไมมันอันตรายหรืออาจเป็นตัวอย่าง?
dplyr::filter
มีปัญหาเดียวกัน คือถ้าสภาพแวดล้อมมีตัวแปรที่มีชื่อนั้นมันจะใช้แทนตัวแปรใน data frame ทำให้การแก้จุดบกพร่องสับสน!
with(airquality, airquality[Month == 8 & Temp > 90, ])