บทเรียนเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุใน R [ปิด]


15

มีแบบฝึกหัดที่ดีเกี่ยวกับการเขียนโปรแกรมเชิงวัตถุใน R หรือไม่?

มันจะดีถ้ามันรวมต่อไปนี้:

  • วิธีกำหนดคลาส
  • ความแตกต่างระหว่างคลาส S3 และ S4
  • โอเปอเรเตอร์การบรรทุกเกินพิกัด (ฉันต้องการให้สามารถเขียนa+bตำแหน่งaและbอินสแตนซ์ของคลาสที่ฉันมีอยู่ในใจได้)

คำตอบ:


10

Wiki ของ Hadley Wickham เกี่ยวกับdevtoolsเป็นแหล่งข้อมูลที่ดีสำหรับข้อมูลที่จำเป็นในรูปแบบย่อ อย่างไรก็ตามหากคุณต้องการทรัพยากรที่ครบถ้วนสมบูรณ์ส่วนOOPของคู่มือภาษา R อาจมีประโยชน์ ฉันมั่นใจว่าสมาชิกที่มีประสบการณ์มากขึ้นจะได้รับคำแนะนำที่ดีกว่า



4

Hadley Wickham " Advanced R " มีคำแนะนำและการอ้างอิงที่ดี ฉันกำลังจำลองส่วนนี้เพื่อการจัดทำดัชนีที่ดีขึ้น

การเลือกระบบ

ระบบ OO สามระบบนั้นมีมากมายสำหรับภาษาเดียว แต่สำหรับการเขียนโปรแกรม R ส่วนใหญ่นั้นเพียงพอเพียง S3 ใน R คุณมักจะสร้างวัตถุและวิธีการที่ค่อนข้างง่ายสำหรับฟังก์ชั่นทั่วไปที่มีอยู่ก่อนเช่น print (), summary () และ plot () S3 เหมาะกับงานนี้และรหัส OO ส่วนใหญ่ที่ฉันเขียนใน R คือ S3 S3 นั้นแปลกนิดหน่อย แต่มันก็ทำให้งานเสร็จด้วยโค้ดขั้นต่ำ

หากคุณกำลังสร้างระบบที่ซับซ้อนมากขึ้นของวัตถุที่สัมพันธ์กัน S4 อาจเหมาะสมกว่า ตัวอย่างที่ดีคือแพ็คเกจ Matrix โดย Douglas Bates และ Martin Maechler มันถูกออกแบบมาเพื่อเก็บและคำนวณอย่างมีประสิทธิภาพด้วยเมทริกซ์กระจัดกระจายหลายประเภท ในเวอร์ชัน 1.1.3 จะกำหนด 102 คลาสและ 20 ฟังก์ชันทั่วไป แพคเกจนั้นเขียนได้ดีและให้ความเห็นเป็นอย่างดีและบทความสั้น ๆ (vignette ("Intro2Matrix", package = "Matrix")) ให้ภาพรวมที่ดีของโครงสร้างของแพ็คเกจ S4 ยังใช้อย่างกว้างขวางโดยแพ็คเกจ Bioconductor ซึ่งจำเป็นต้องสร้างแบบจำลองความสัมพันธ์ที่ซับซ้อนระหว่างวัตถุชีวภาพ Bioconductor ให้ทรัพยากรที่ดีมากมายสำหรับการเรียนรู้ S4 หากคุณเชี่ยวชาญ S3, S4 นั้นค่อนข้างง่ายต่อการรับ ความคิดเหมือนกันหมด

หากคุณตั้งโปรแกรมด้วยภาษา OO หลัก RC จะดูเป็นธรรมชาติมาก แต่เนื่องจากพวกเขาสามารถแนะนำผลข้างเคียงผ่านสภาวะที่ไม่แน่นอนพวกเขาจึงยากที่จะเข้าใจ ตัวอย่างเช่นเมื่อคุณมักจะเรียก f (a, b) ใน R คุณสามารถสันนิษฐานได้ว่า a และ b จะไม่ถูกแก้ไข แต่ถ้า a และ b เป็นวัตถุ RC พวกมันอาจถูกดัดแปลงในสถานที่นั้น โดยทั่วไปเมื่อใช้วัตถุ RC คุณต้องการลดผลข้างเคียงให้น้อยที่สุดเท่าที่จะทำได้และใช้เฉพาะเมื่อจำเป็นต้องมีสถานะที่ไม่แน่นอน ฟังก์ชั่นส่วนใหญ่ควรจะ“ ทำงานได้” และไม่มีผลข้างเคียง ทำให้โค้ดง่ายขึ้นในการให้เหตุผลและง่ายกว่าสำหรับโปรแกรมเมอร์ R คนอื่นที่จะเข้าใจ

เขาอ้างอิง " การสอนที่เป็นประโยชน์เกี่ยวกับการเขียนโปรแกรม S4 "

มีแหล่งข้อมูลที่น่าสนใจอื่น ๆ อีกมากมายหากคุณทำตามคำแนะนำของเขา

John M. Chambers กล่าวใน"การเขียนโปรแกรมเชิงวัตถุ, ฟังก์ชั่นการเขียนโปรแกรมและ R" :

R ยังได้รับอิทธิพลอย่างมากจากแนวคิดของการเขียนโปรแกรมเชิงหน้าที่และโดยเฉพาะอย่างยิ่งความปรารถนาที่จะรวมการทำงานกับการเขียนโปรแกรมเชิงวัตถุ

จะเพิ่มบางสิ่งบางอย่างที่ไม่เกี่ยวข้องโดยตรงกับคำถาม แต่ตามความคิดเดียวกัน: "DataFrames ใน Spark สำหรับขนาดใหญ่ข้อมูลวิทยาศาสตร์" เนื่องจากสิ่งนี้ทำให้สกาล่าและอาร์ใกล้ขึ้นจึงอาจมีการรวมพลัง OO / ฟังก์ชั่นที่ยอดเยี่ยมออกมาจากสิ่งนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.