sub & gsub
ในขณะที่ grep() และ grepl() ใช้สำหรับตรวจสอบเพียงว่า regular expression สามารถจับคู่กับ character vector ได้หรือไม่ แต่ sub() และ gsub() ทำได้มากกว่านั้น โดยรองรับอาร์กิวเมนต์ replacement ด้วย หากพบ pattern ที่ระบุใน character vector x องค์ประกอบที่จับคู่ได้จะถูกแทนที่ด้วย replacement โดย sub() จะแทนที่เฉพาะการจับคู่แรกเท่านั้น ส่วน gsub() จะแทนที่ทุกการจับคู่ที่พบ
สมมติว่า vector ชื่อ emails ที่ใช้งานอยู่นี้เป็นส่วนหนึ่งของฐานข้อมูลอีเมลของ DataCamp ลองเสนออีเมลใหม่บนโดเมน datacamp.edu ให้กับเจ้าของที่อยู่อีเมล .edu ดูสิ นี่อาจเป็นกลยุทธ์การตลาดที่น่าสนใจ: การศึกษาออนไลน์กำลังเข้ามาเปลี่ยนแปลงรูปแบบการเรียนรู้แบบดั้งเดิม! เปลี่ยนมาใช้อีเมลใหม่และเป็นส่วนหนึ่งของยุคสมัยใหม่!
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
R ระดับกลาง
คำแนะนำการฝึกหัด
ใช้ regular expression ขั้นสูง "@.*\\.edu$" ร่วมกับ sub() เพื่อแทนที่การจับคู่ด้วย "@datacamp.edu" เนื่องจากแต่ละ character string มีการจับคู่ได้เพียงครั้งเดียว จึงไม่จำเป็นต้องใช้ gsub() จากนั้นตรวจสอบผลลัพธ์ที่ได้
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# The emails vector has already been defined for you
emails <- c("[email protected]", "[email protected]", "[email protected]",
"invalid.edu", "[email protected]", "[email protected]")
# Use sub() to convert the email domains to datacamp.edu