The Art of R Programming: เขียน R ให้เป็นโปรแกรม ไม่ใช่แค่สั่งคำนวณ statistics
หนังสือของ Norman Matloff ที่สอน R ในมุมการพัฒนาซอฟต์แวร์ ตั้งแต่ vector และ data frame ไปจนถึง debugging การเพิ่มสมรรถนะ และ parallel R บทความนี้สรุปจากสารบัญและบทที่ 3 ที่ No Starch Press เปิดให้อ่านตัวอย่าง

ขอบเขตของบทความ: สรุปจากสารบัญและบทที่ 3 Matrices and Arrays ที่ No Starch Press เผยแพร่ให้อ่านตัวอย่าง รวมกับคำอธิบายบนหน้าหนังสือของสำนักพิมพ์ ยังไม่ได้อ่านบทอื่นนอกจากบทที่ 3 ข้อสังเกตเรื่องบทอื่นมาจากชื่อบทในสารบัญเท่านั้น
หลายคนเริ่มใช้ R จากงาน statistics หรือวิเคราะห์ข้อมูล เขียนสคริปต์ได้ แต่พอโค้ดยาวขึ้นก็เจอปัญหาที่เป็นเรื่องการเขียนโปรแกรมมากกว่า statistics เช่น โค้ดช้า หาบั๊กยาก หรือผลลัพธ์เปลี่ยนรูปแบบโดยไม่ตั้งใจ The Art of R Programming เขียนมาสำหรับช่องว่างนี้ บทความนี้ช่วยดูว่าเล่มนี้สอนอะไร และเหมาะกับใคร
หนังสือเล่มนี้ว่าด้วยอะไร
The Art of R Programming: A Tour of Statistical Software Design เขียนโดย Norman Matloff ตีพิมพ์โดย No Starch Press เดือนตุลาคม 2011 ความยาว 400 หน้า ISBN 9781593273842 (หน้าหนังสือของ No Starch Press) Open Library บันทึกฉบับเดียวกันว่าพิมพ์ที่ San Francisco
หน้าสำนักพิมพ์อธิบายว่าเป็นการพาเที่ยวการพัฒนาซอฟต์แวร์ด้วย R ตั้งแต่ชนิดข้อมูลพื้นฐานจนถึง closure, recursion และ anonymous function และระบุว่า ไม่ต้องมีพื้นฐาน statistics ผู้เขียนเป็นศาสตราจารย์ด้านวิทยาการคอมพิวเตอร์ที่ UC Davis เคยเป็นศาสตราจารย์ด้าน statistics และเขียน The Art of Debugging กับ No Starch Press ด้วย
เนื้อหาครอบคลุมหัวข้ออะไร
สารบัญบนหน้าสำนักพิมพ์มี 16 บทและภาคผนวกสองภาค
กลุ่ม | บท | หัวข้อตามสารบัญ |
|---|---|---|
โครงสร้างข้อมูล | 1–6 | Getting Started, Vectors, Matrices and Arrays, Lists, Data Frames, Factors and Tables |
การเขียนโปรแกรม | 7–9 | R Programming Structures, Doing Math and Simulations in R, Object-Oriented Programming |
งานรอบข้าง | 10–12 | Input/Output, String Manipulation, Graphics |
คุณภาพและสมรรถนะ | 13–16 | Debugging, Performance Enhancement: Tradeoffs in Time and Space, Interfacing R to Other Languages, Parallel R |
ภาคผนวก | A–B | Installing R, Installing and Using Packages |
การจัดกลุ่มในตารางเป็นของบทความนี้ ไม่ใช่การแบ่งภาคของหนังสือ ช่วงท้ายเล่มที่ว่าด้วย debugging สมรรถนะ การเชื่อม R กับ C/C++ และ Python และการประมวลผลแบบขนาน คือส่วนที่ทำให้เล่มนี้ต่างจากหนังสือ R สำหรับงาน statistics ทั่วไป
แนวคิดที่น่าสนใจจากบทที่ 3
บทที่ 3 Matrices and Arrays (หน้า 59–83 ตามเลขหน้าในไฟล์) เปิดให้อ่านเป็นตัวอย่าง (บทที่ 3) และแสดงสไตล์การสอนของทั้งเล่มได้ชัด
matrix คือ vector ที่มีจำนวนแถวและคอลัมน์กำกับ ผู้เขียนเปิดบทด้วยนิยามนี้ และอธิบายว่า R เก็บ matrix แบบ column-major การใส่
byrow=Tในmatrix()เปลี่ยนแค่ลำดับการรับข้อมูลเข้า ไม่ได้เปลี่ยนวิธีเก็บ (หัวข้อ 3.1)ตัวอย่างขยายที่ใช้ข้อมูลจริง บทนี้มี Extended Example หลายชิ้น เช่น การแก้ภาพขาวดำของ Mount Rushmore ด้วยแพ็กเกจ
pixmapการสร้าง covariance matrix การหา outlier และการหาคู่จุดยอดที่ใกล้ที่สุดในกราฟ (หัวข้อ 3.2.3, 3.2.5, 3.3.2, 3.4.2)`apply()` ไม่ได้ทำให้เร็วขึ้นเสมอ ผู้เขียนแย้งความเชื่อทั่วไปว่าการใช้
apply()โดยทั่วไปไม่ได้เร่งความเร็วโค้ด ข้อดีคือโค้ดกระชับ อ่านและแก้ง่าย และเลี่ยงบั๊กจากการเขียนลูปเอง (หัวข้อ 3.3.1)ระวังการสร้าง matrix ซ้ำ ๆ ผู้เขียนเตือนว่า
rbind()และcbind()สร้าง matrix ใหม่ทุกครั้ง ซึ่งกินเวลา (หัวข้อ 3.4.1)dimension reduction ที่ไม่ตั้งใจ เมื่อดึงแถวเดียวจาก matrix ผลลัพธ์จะกลายเป็น vector ผู้เขียนแนะนำให้ใส่
drop=FALSEเป็นนิสัยในโค้ดที่ทำงานกับ matrix และอธิบายว่า[เองก็เป็นฟังก์ชัน (หัวข้อ 3.6)
เรื่อง drop=FALSE เป็นตัวอย่างที่ดีของสิ่งที่ผู้ใช้ R สายวิเคราะห์ข้อมูลมักพลาด เช่น ฟังก์ชันที่คาดว่าจะได้ matrix หนึ่งแถว แต่ได้ vector กลับมาแทน แล้วคำนวณผิดโดยไม่มี error ย่อหน้านี้เป็นคำอธิบายประกอบของบทความ ส่วนรายละเอียดอยู่ในหัวข้อ 3.6
พื้นฐานที่ควรมีก่อนอ่าน
หน้าสำนักพิมพ์ระบุว่าไม่ต้องมีพื้นฐาน statistics และเหมาะทั้งมือสมัครเล่นและมืออาชีพ จากบทที่ 3 ผู้เขียนอ้างถึงเนื้อหาในบทที่ 2 เรื่อง vector อยู่หลายจุด และมีการคูณ matrix ด้วย %*% การคุ้นกับพีชคณิตเชิงเส้นเบื้องต้นจึงช่วยให้ตามตัวอย่างได้ง่ายขึ้น ส่วนบทท้ายเล่มที่เชื่อม R กับ C/C++ น่าจะต้องอ่านโค้ด C ได้บ้าง ข้อหลังนี้อนุมานจากชื่อบท
เหมาะกับใคร และใครควรเริ่มจากเล่มอื่นก่อน
เหมาะ กับคนที่ใช้ R วิเคราะห์ข้อมูลหรือทำงานเชิงปริมาณอยู่แล้ว และอยากเขียนโค้ดที่เป็นระบบ เร็วขึ้น และหาบั๊กได้
เหมาะ กับโปรแกรมเมอร์จากภาษาอื่นที่ต้องเริ่มใช้ R เพราะหนังสือสอนในมุมภาษาโปรแกรม ไม่ใช่มุม statistics
ควรเริ่มจากเล่มอื่น ถ้าต้องการเรียน statistical methods หรือการวิเคราะห์ time series ด้วย R เพราะสารบัญไม่ได้มีบทเฉพาะเรื่องเหล่านั้น
ข้อจำกัดของข้อมูลที่ใช้ในบทความนี้
อ่านเฉพาะบทที่ 3 และสารบัญระดับบท บทอื่นสรุปจากชื่อบทเท่านั้น
ฉบับนี้ตีพิมพ์ปี 2011 แพ็กเกจและฟังก์ชันที่ใช้ในเล่ม เช่น
pixmapหรือแพ็กเกจสำหรับประมวลผลแบบขนาน อาจมีทางเลือกที่ใหม่กว่าแล้ว ควรตรวจกับเอกสารของ R รุ่นปัจจุบันหน้าสำนักพิมพ์ระบุ 400 หน้า ส่วน Open Library บันทึกเลขหน้า xxiii และ 373 หน้า น่าจะนับต่างกันเรื่องหน้าเบื้องต้น
บทความนี้ไม่ได้รันโค้ดตัวอย่างในเล่ม
แหล่งอ้างอิง
The Art of R Programming · No Starch Press · คำอธิบาย สารบัญ วันที่ตีพิมพ์ จำนวนหน้า และประวัติผู้เขียน
Chapter 3: Matrices and Arrays (PDF) · No Starch Press · บทที่ 3 ทั้งบท หน้า 59–83
Open Library: 9781593273842 · Internet Archive · ข้อมูลฉบับ สำนักพิมพ์ และเลขหน้า
หนังสือที่กล่าวถึงในบทความนี้

The Art of R Programming
Norman Matloff
สารบัญ 16 บทครอบคลุมโครงสร้างข้อมูล OOP debugging การเพิ่มสมรรถนะ การเชื่อม R กับ C/C++ และ Python และ parallel R
บทความนี้อ่านจบได้ในตัวเอง หนังสือด้านบนคือจุดต่อยอดสำหรับผู้ที่ต้องการศึกษาลึกขึ้น
อ่านต่อ
25 ตุลาคม 2569
A Tour of C++ (ฉบับแรก): ภาพรวม C++11 ฉบับย่อจาก Bjarne Stroustrupหนังสือขนาดราว 180 หน้าของผู้ออกแบบภาษา C++ ที่สรุปทั้งตัวภาษาและ standard library ของ C++11 สำหรับโปรแกรมเมอร์ที่มีประสบการณ์ บทความนี้แนะนำขอบเขตเนื้อหาจากสารบัญบนหน้าสำนักพิมพ์และเว็บไซต์ผู้เขียน
25 ตุลาคม 2569
Operating Systems: Three Easy Pieces: ตำรา OS ที่อ่านฟรีได้ทีละบท เหมาะกับใครตำราระบบปฏิบัติการของ Remzi และ Andrea Arpaci-Dusseau แบ่งเป็นสามแกน virtualization, concurrency และ persistence บทความนี้อ่านบางบทจากฉบับออนไลน์ที่ผู้เขียนเผยแพร่ฟรี ได้แก่ คำนำ บทที่ 2, 26 และ 28
25 ตุลาคม 2569
Automate the Boring Stuff with Python ฉบับแรก: เขียน Python เพื่อลดงานซ้ำในออฟฟิศหนังสือ Python สำหรับคนที่ไม่ได้จะเป็นโปรแกรมเมอร์อาชีพของ Al Sweigart บทความนี้อ่านบางบทของฉบับแรก (2015) ที่ผู้เขียนเปิดให้อ่านออนไลน์ ได้แก่บทนำและบทที่ 12 เรื่อง Excel เพื่อช่วยตัดสินว่าเล่มนี้เหมาะกับคุณหรือไม่
