rep() ใน R: การถอดรหัสฟังก์ชันการจำลองแบบ
เผยแพร่แล้ว: 2020-06-15ก่อนที่เราจะพูดถึง การทำซ้ำ ใน R เราต้องรู้ว่าการวนซ้ำคืออะไร คำว่า iteration หมายถึง การทำซ้ำ เช่นเดียวกับภาษาโปรแกรมอื่นๆ ส่วนใหญ่ การวนซ้ำหรือการวนซ้ำแบบดั้งเดิมเป็นองค์ประกอบหลักของ R
แม้ว่าลูปปกติจะเป็นวิธีที่มีประสิทธิภาพในการจัดการข้อมูล แต่ก็มีค่าใช้จ่ายสูงด้วยเหตุผลเดียวที่ทำให้การวนซ้ำเป็นหน่วยความจำและใช้เวลานาน ทางเลือกที่ดีคือการใช้วิธี vectorized ที่สามารถบรรลุเป้าหมายเดียวกันกับการวนซ้ำ ฟังก์ชัน rep() เป็นสมาชิกของฟังก์ชันวนซ้ำแบบเวกเตอร์ดังกล่าว
สารบัญ
ฟังก์ชัน rep() คืออะไร?
พูดง่ายๆ ว่า rep ใน R หรือฟังก์ชัน rep() จะจำลองค่าตัวเลขหรือข้อความ หรือค่าของเวกเตอร์ตามจำนวนครั้งที่ระบุ ฟังก์ชัน rep() เป็นสมาชิกของฟังก์ชันกลุ่ม Apply() ของแพ็คเกจ R พื้นฐาน ตระกูล Apply() มีฟังก์ชันที่ใช้ในการจัดการข้อมูลจากอาร์เรย์ เมทริกซ์ กรอบข้อมูล และรายการซ้ำๆ
ฟังก์ชัน apply() หลบเลี่ยงการใช้โครงสร้างแบบวนซ้ำเพื่อดำเนินการกับอาร์เรย์ เมทริกซ์ หรือรายการอินพุต และใช้ฟังก์ชันที่มีชื่อพร้อมอาร์กิวเมนต์ที่เป็นทางเลือก ฟังก์ชันที่เรียกอาจเป็นฟังก์ชันการรวม ฟังก์ชันการแปลง หรือฟังก์ชันเวกเตอร์ เช่น อาร์เรย์ เวกเตอร์ รายการ และเมทริกซ์ ดูหลักสูตรวิทยาศาสตร์ข้อมูลของเราเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับฟังก์ชัน
อ่านเพิ่มเติม: Data Frames ใน Python: Python บทช่วยสอนเชิงลึก
การคำนวณแบบเวกเตอร์กับการวนซ้ำ
แทนที่จะทำงานบนแต่ละองค์ประกอบของลำดับ วิธีการแบบเวกเตอร์นั้นทำงานบนส่วนประกอบเวกเตอร์ทั้งหมดพร้อมกัน ดังนั้น การคำนวณแบบเวกเตอร์จะดึงผลลัพธ์ที่เร็วขึ้นเสมอ
เพื่อแสดงความเร็วของการคำนวณแบบเวกเตอร์ เราจะใช้ตัวอย่างที่กำหนดเวลาที่ผ่านไปของลูป for() สำหรับการสร้างเวกเตอร์ขนาดใหญ่ ในตัวอย่าง แต่ละองค์ประกอบจะถูกคำนวณตามลำดับเป็นผลรวมสะสมที่เพิ่มขึ้นจาก 1 ถึง N (โดยที่ N = 10,000,000) มีการเปรียบเทียบระหว่าง for() วนซ้ำและฟังก์ชัน vectorized ผ่านการทดสอบความเร็ว
แหล่งที่มา
ในการเปรียบเทียบผลลัพธ์ของการทดสอบความเร็ว เป็นที่ชัดเจนว่าเวลาที่ผ่านไปสำหรับการคำนวณแบบเวกเตอร์ (การทดสอบความเร็ว 2) นั้นเร็วกว่าลูป for() อย่างมาก ในช่วงเวลาที่ใช้สำหรับการวนซ้ำหนึ่งครั้ง การคำนวณแบบเวกเตอร์สามารถทำซ้ำได้ 278 ครั้ง
ทำซ้ำกับฟังก์ชันทำซ้ำ
ฟังก์ชันทำซ้ำหรือลูปใน R จะใช้เมื่อเราต้องการเรียกใช้บล็อกโค้ดเดียวกันซ้ำๆ จนกว่าจะตรงตามเงื่อนไขที่ระบุ คล้ายกับลูป for และ while ที่รันบล็อกคำสั่งซ้ำๆ จนกระทั่งถึงตัวแบ่ง ไวยากรณ์พื้นฐานในการสร้างการวนซ้ำคือ:
ทำซ้ำ {
ถ้า(เงื่อนไข) {
หยุดพัก
}
}
ตัวอย่างต่อไปนี้จะชี้แจงการใช้ฟังก์ชันทำซ้ำ:
ในตัวอย่างข้างต้น การวนซ้ำจะสรุปค่าจนกว่าจะถึง 6 เมื่อวนถึง 6 แล้ว การวนซ้ำจะขาดโดยการพิมพ์ "วนซ้ำสิ้นสุด"
ในทางกลับกัน ฟังก์ชันทำซ้ำหรือตัวแทนใน R ใช้สำหรับการจำลองค่า ไวยากรณ์ R พื้นฐานสำหรับการใช้ฟังก์ชัน rep() คือ:
- ตัวแทน(ค่า,number_of_times)
- ตัวแทน (ลำดับ, แต่ละครั้ง, จำนวน_of_times)
ต่อไปนี้คือตัวอย่างบางส่วนเพื่อทำความเข้าใจฟังก์ชัน rep()
ตัวอย่าง: การใช้ฟังก์ชัน rep() เพื่อจำลองค่าตามจำนวนครั้งที่เจาะจง
ในตัวอย่างข้างต้น ค่า 2 ทำซ้ำสิบครั้ง
ตัวอย่าง: การใช้ฟังก์ชัน rep() กับแอตทริบิวต์ length

ในตัวอย่างข้างต้น 1 ถึง 4 จะถูกพิมพ์ตามลำดับจนกว่าจำนวนขององค์ประกอบจะถึง 20
ตัวอย่าง: การใช้ฟังก์ชัน rep() เพื่อจำลองรายการ
ในตัวอย่างข้างต้น รายการการให้คะแนน 1 ถึง 5 มีการทำซ้ำสามครั้ง
แหล่งที่มา
การใช้ฟังก์ชัน rep() เพื่อขยาย vector
ฟังก์ชัน rep() เป็นวิธีที่ยืดหยุ่นในการทำซ้ำเวกเตอร์ นี่คือตัวอย่างเพิ่มเติมบางส่วน:
ในกรณีที่เราจำเป็นต้องขยายเวกเตอร์สถิติของหน่วยทดลอง/การสังเกตเป็นเวกเตอร์ของกรอบข้อมูลที่มีการสังเกตหน่วยซ้ำๆ กัน อาร์กิวเมนต์แต่ละรายการจะมีประโยชน์มาก ตัวอย่าง:
คุณสมบัติอื่นของ rep() คือเวกเตอร์สามารถขยายไปยังแผงที่ไม่สมดุลโดยแทนที่อาร์กิวเมนต์ความยาวด้วยเวกเตอร์ที่ระบุจำนวนครั้งที่แต่ละองค์ประกอบในเวกเตอร์จะทำซ้ำ ตัวอย่าง:
ฟังก์ชัน rep ที่ง่ายและเร็วกว่านั้นรวมถึง rep_len() และ rep.int() เวอร์ชันที่ใหม่กว่าเหล่านี้มาโดยไม่มีคุณลักษณะบางอย่างของ rep() แต่พิสูจน์ว่ามีประโยชน์ในกรณีที่ความเร็วเป็นจุดเริ่มต้นและลักษณะพิเศษของเวกเตอร์ที่ซ้ำกันนั้นไม่เป็นที่ต้องการ
แหล่งที่มา
อ่าน: 6 แนวคิดโครงการ R ที่น่าสนใจสำหรับผู้เริ่มต้น
บทสรุป
ในบทความนี้ เราได้พูดถึงฟังก์ชันทำซ้ำและทำซ้ำพร้อมตัวอย่างที่เหมาะสม ในขณะที่การวนซ้ำแบบเดิมมีประโยชน์สำหรับการดำเนินการซ้ำของบล็อกโค้ด การทำซ้ำ ใน R นั้นเหมาะอย่างยิ่งสำหรับการจำลองค่าของเวกเตอร์หรือรายการ มีประสิทธิภาพและประหยัดเวลา ฟังก์ชัน rep() ได้ทำให้การจำลองเวกเตอร์ง่ายขึ้น!
หากคุณอยากเรียนรู้เกี่ยวกับ R, data science, ลองดู IIIT-B & upGrad's Executive PG Program in Data Science ซึ่งสร้างขึ้นสำหรับมืออาชีพที่ทำงานและมีกรณีศึกษาและโครงการมากกว่า 10 แบบ, การประชุมเชิงปฏิบัติการเชิงปฏิบัติ, การให้คำปรึกษากับผู้เชี่ยวชาญในอุตสาหกรรม แบบตัวต่อตัวกับที่ปรึกษาในอุตสาหกรรม การเรียนรู้มากกว่า 400 ชั่วโมงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ
ฉันจะสร้างเวกเตอร์ที่มีค่าซ้ำกันใน R ได้อย่างไร
ฟังก์ชัน rep() ใน R อาจใช้เพื่อทำซ้ำชุดของจำนวนเต็ม ใน R มีสองเทคนิคในการสร้างเวกเตอร์ที่มีค่าซ้ำกัน วิธีแรกทำซ้ำแต่ละองค์ประกอบในเวกเตอร์ ในขณะที่วิธีที่สองทำซ้ำองค์ประกอบตามจำนวนที่กำหนด เวกเตอร์ถูกสร้างขึ้นโดยใช้ฟังก์ชันตัวแทนในแต่ละวิธีเหล่านี้ ตัวอย่างเช่น การทำซ้ำ (1:5, ครั้ง=5) ให้เวกเตอร์ที่มีลำดับ 1 ถึง 5 ซ้ำ 5 ครั้ง
ฟังก์ชั่นใดเร็วกว่า - ทำซ้ำหรือสำหรับวนซ้ำ?
ในภาษาการเขียนโปรแกรม R ฟังก์ชัน For loop จะเร็วกว่าฟังก์ชันทำซ้ำ for-loop เป็นเทคนิคในการวนซ้ำรายการค่าในภาษาการเขียนโปรแกรมต่างๆ โดยการรันโค้ดสำหรับแต่ละค่าในรายการ rep() เป็นฟังก์ชันวนซ้ำแบบเวกเตอร์ซึ่งมีจุดประสงค์เพียงอย่างเดียวคือการรันโดยไม่ทำให้หน่วยความจำสิ้นเปลือง เมื่อคุณต้องการเปลี่ยนส่วนของกรอบข้อมูลที่มีอยู่ โดยปกติแล้ว For Loop จะเป็นตัวเลือกที่ดีที่สุด
ฉันจะเพิ่มความเร็วรหัส R ได้อย่างไร
วิธีการบางอย่างในการเร่งความเร็วรหัส R มีการระบุไว้ด้านล่าง:-
1. ก่อนใส่โครงสร้างข้อมูลและตัวแปรเอาต์พุตลงในลูปสำหรับการคำนวณ ตรวจสอบให้แน่ใจว่ามีความยาวและประเภทข้อมูลที่เหมาะสม ภายในลูป พยายามอย่าขยายปริมาณข้อมูลไปเรื่อยๆ
2. เมื่อเป็นไปได้ ให้ใช้เมทริกซ์แทน data frame เนื่องจาก data frames สามารถสร้างปัญหาได้ในหลายสถานการณ์ เป็นผลให้ใช้เฟรมข้อมูลเมื่อจำเป็นอย่างยิ่งเท่านั้น
3. หากเป็นไปได้ ให้ใช้การดำเนินการเวกเตอร์และเมทริกซ์
4. ใน R อย่าเปลี่ยนประเภทหรือขนาดของวัตถุ การเปลี่ยนประเภทและขนาดของวัตถุ R ทำให้เกิดการจัดสรรพื้นที่หน่วยความจำใหม่ ซึ่งไม่เพียงพอตามค่าเริ่มต้น