เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การแบ่งชุดข้อมูล

ในแบบฝึกหัดก่อนหน้า เราได้พบว่าค่าเฉลี่ยของจำนวนการรีทวีตต่อทวีตอยู่ที่ 3.3 ในแบบฝึกหัดนี้ เราจะมาดูกันว่ามีทวีตกี่รายการที่อยู่เหนือค่าเฉลี่ยนี้ และกี่รายการที่อยู่ต่ำกว่า

เราจะเริ่มต้นด้วยการสร้าง mapper สำหรับทดสอบว่า .x มีค่ามากกว่า 3.3 หรือไม่ จากนั้นจะเติมค่าล่วงหน้าให้ map_at() โดยกำหนด .at เป็น "retweet_count" และ .f เป็น mapper ที่สร้างขึ้น และในอีกครั้งหนึ่งจะใช้การนิเสธ (negation) ของ mapper นั้น

หมายเหตุ: นับตั้งแต่คอร์สนี้ถูกสร้างขึ้น พฤติกรรมของ purrr มีการเปลี่ยนแปลง เพื่อหลีกเลี่ยงการชนกันของอาร์กิวเมนต์ .f ใน partial() และ .f ใน map_at() จึงต้องใช้ตัวดำเนินการ quasi-quotation equals อย่าง := (หรือที่รู้จักกันในชื่อ "walrus operator") สำหรับแบบฝึกหัดนี้ สิ่งที่ต้องรู้คือ := ทำงานเหมือนกับ = แต่จะแจ้งให้ partial() ทราบว่าอาร์กิวเมนต์นั้นควรส่งต่อไปยัง map_at() แทนที่จะเก็บไว้เอง

เมื่อเตรียมเครื่องมือเหล่านี้พร้อมแล้ว เราจะนำไปใช้กับออบเจ็กต์ non_rt ซึ่งเป็นการดึงเฉพาะ "ทวีตต้นฉบับ" จากชุดข้อมูล rstudioconf

ได้โหลด purrr ไว้ให้แล้ว

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Functional Programming ระดับกลางด้วย purrr

ดูคอร์ส

คำแนะนำการฝึกหัด

  • สร้าง mean_above ซึ่งเป็น mapper สำหรับทดสอบว่า .x มีค่ามากกว่า 3.3 หรือไม่

  • เติมค่าล่วงหน้าให้ map_at() สองเวอร์ชัน ได้แก่ เวอร์ชันหนึ่งใช้ "retweet_count" และ mean_above และอีกเวอร์ชันใช้ "retweet_count" และการนิเสธของ mean_above

  • นำฟังก์ชันที่เติมค่าล่วงหน้าทั้งสองไป map กับ non_rt แล้วเลือกเฉพาะองค์ประกอบ "retweet_count"

  • หาขนาดของผลลัพธ์ทั้งสอง

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# Create mean_above, a mapper that tests if .x is over 3.3
mean_above <- ___(~ ___)

# Prefil map_at() with "retweet_count", mean_above for above, 
# and mean_above negation for below
above <- partial(___, .at = "retweet_count", .f := ___ )
below <- partial(___, .at = "retweet_count", .f := ___ )

# Map above() and below() on non_rt, keep the "retweet_count"
ab <- ___(non_rt, ___) %>% ___("retweet_count")
bl <- ___(non_rt, ___) %>% ___("retweet_count")

# Compare the size of both elements
___(ab)
___(bl)
แก้ไขและรันโค้ด