สามารถ downlaod ได้ที่ http://mirrors.psu.ac.th/pub/cran/
ผมขออนุญาตข้ามขั้นตอนการติดตั้งนะครับ
หลังจากติดตั้งและเปิดโปรแกรมมาแล้วหน้าจอก็จะประมาณนี้ครับ
ก่อนที่จะสร้างเมตริกซ์ จะต้องเข้าใจตัวแปรและสัญลักษณ์เหล่านี้ก่อนครับ
ตัวแปรจะต้องเป็นภาษาอังกฤษหรือตัวเลข โดยจะต้องขึ้นต้นด้วยตัวอักษร ไม่มีเว้นวรรค
เช่น Data1, X, x, AX, Ax9 ... โดยที่ควรจะตั้งชื่อตัวแปรให้สื่อความหมายกับข้อมูล
และต้องระมัดระวังเกี่ยวกับชื่อตัวแปรที่คล้ายกัน เนื่องจากตัวเล็กและตัวใหญ่ถือว่าเป็นตัวแปรที่ต่างกัน
เช่น Data1, DATA1, data1, ....
ส่วนของสัญลักษณ์ในเบื้องต้นมีดังนี้
สัญลักษณ์  | ความหมาย  | ตัวอย่าง  | 
<- หรือ =  | นำค่าการทำงานของฟังก์ชั่นที่อยู่ทางด้านขวาไปเก็บไว้ในตัวแปรที่ตั้งชื่อไว้ทางด้านซ้าย  | k <- 10 หรือ k = 10 คือเก็บค่า 10 ไว้ใน k  | 
c()  | นำข้อมูลมาต่อกันเป็นเวคเตอร์ (Concatination operator)  | y = (1,2,5,6) คือการเก็บค่า (1,2,5,6) ใน y  | 
:  | Sequence operator  | m = 0:99 คือสร้าง 0 ถึง 99 เก็บค่าไว้ใน m  | 
seq(from a,to b,by c)  | Sequence operator from a to b by c  | p = seq(0,3,0.1) คือ สร้าง 0 ถึง 3 โดยเพิ่มค่าครั้งละ 0.1  | 
rep(a,times)  | การอ่านข้อมูลซ้ำ  | h = rep(“VT”,3) คือสร้าง “VT” ซ้ำกัน 3 ครั้ง  | 
sort(a)  | การเรียงลำดับจากน้อยไปหามากของ a  | a = c(0,3,2,1) b = sort(a) result = 0,1,2,3  | 
rev(sort(a))  | การเรียงลำดับจากมากไปหาน้อยของ a  | t = rev(sort(a)) result = 3,2,1,0  | 
a[i]  | การอ้างอิงสมาชิกตำแหน่งที่ i ของ a  | a[1] = 0, a[2] = 3  | 
a[i:j]  | การอ้างอิงสมาชิกตำแหน่งที่ i ถึง j ของ a  | a[2:4] = 3,2,1 a[3:4] = 2,1  | 
a[-i]  | การอ้างอิงค่าที่ไม่ใช่ตำแหน่งที่ i ของ a  | a[-3] = 0,3,1  | 
a[-length(a)]  | การอ้างอิงค่าที่ไม่ใช่ตำแหน่งสุดท้ายของ a  | a[-length(a)] = 0,3,2  | 
ต่อไปก็เป็นฟังก์ชั่นต่าง ๆ ที่ใช้ในการคำนวณเมตริกซ์
สัญลักษณ์  | ความหมาย  | ตัวอย่าง  | 
+  | การบวก  | g = 1+9 (g=10)  | 
-  | การลบ  | p = 5-2 (p=3)  | 
*  | การคูณ  | s = 4*12 (s=48)  | 
/  | การหาร  | d = 1/9 (d=0.1111111)  | 
^  | การยกกำลัง  | z = 2^10 (z=1024)  | 
sqrt()  | การหารากที่สอง  | n = sqrt(64) (n = 8)  | 
abs()  | การหาค่าสัมบูรณ์  | e = abs(-21) (e = 21)  | 
log()  | การหา Natural log  | v = log(2) (v = 0.6931472)  | 
log10()  | การหา Common log  | f = log10(100) (f =2)  | 
exp()  | การหาค่า e^x  | u = exp(2) (u = 7.389056)  | 
%/%  | การหาจำนวนเต็มที่ได้จากการหาร  | r1 = 6%/%4 (r1 = 1) r2 = 19%/%3 (r2 = 6)  | 
%%  | การหาเศษที่เหลือจากการหาร  | j1 = 109%%2 (j1=1) j2 = 10%%7 (j2 = 3)  | 
sum(x)  | คำนวณผลรวมของ x  | x = (1,2,3) sum(x) = 6  | 
mean(x)  | คำนวณค่าเฉลี่ยเลขคณิตของ x  | mean(x) = 2  | 
median(x)  | คำนวณค่ามัธยฐานของ x  | median(x) = 2  | 
sd(x)  | คำนวณค่าเบี่ยงเบนมาตรฐานของ x  | sd(x) = 1  | 
var(x)  | คำนวณค่าความแปรปรวนของ x  | var(x) = 1  | 
เราลองมาคำนวณเวคเตอร์กันก่อนนะครับ ก่อนที่จะไปคำนวณเมตริกซ์
สร้างตัวแปรขึ้นมา 3 ตัว
a1 = (1,2,3)
a2 = (4,5,6)
a3 = (7,8,9)
ให้หาคำตอบ
(1) 5*a1 (2) a1+a2 (3) a2-a3 (4) a3*a1
สังเกตว่าการคูณ ก็คือ การเอาสมาชิกในตำแหน่งเดียวกัน มาคูณกันเลย
ยังไม่ใช่การคูณตามหลักของเมตริกซ์นะครับ
ให้หาคำตอบ
(1) ผลรวมของ 1,2,3,...,32,33
(2) ค่าเฉลี่ย 2,4,6,...,198,200
หลังจากที่เราสร้างเวคเตอร์ขึ้นมาแล้ว เราก็จะเอาเวคเตอร์เหล่านั้นมารวมกัน เพื่อสร้างเป็นเมตริกซ์
โดยมีสัญลักษณ์ที่ใช้คือ
cbind(x1,x2,x3,...,xn) = การรวมเวคเตอร์ x1,x2,x3,...,xn ทางด้านคอลัมน์
rbind(x1,x2,x3,...,xn) = การรวมเวคเตอร์ x1,x2,x3,...,xn ทางด้านแถว
ตัวอย่างเช่น
p=(1,2,3)
q=(2,4,7)
r=(9,4,0)
นอกจากนี้ยังมีอีกสัญลักษณ์คือ
matrix(data =, nrow =, ncol =, byrow = TRUE/FALSE)
เช่น s1=(1,2,3,4,5,6,7,8,9) สร้างเป็นเมตริกซ์ 3*3
สังเกตว่าถ้าเราไม่ใส่ byrow จะมีค่าเท่ากับ FALSE
สัญลักษณ์ที่เกี่ยวข้องอีกเล็กน้อยครับ
K[i,j] เป็นการอ้างอิงสมาชิกแถวที่ i คอลัมน์ที่ j ของเมตริกซ์ K
dim(K) เป็นการตรวจสอบมิติของเมตริกซ์ K
สังเกตว่า P[5,2] = Error เพราะว่าเมตริกซ์มีมิติ 2*5 แต่เราถามถึงสมาชิกแถวที่ 5 คอลัมน์ที่ 2 ซึ่งไม่มีจริง
สัญลักษณ์ที่ใช้เกี่ยวกับการคำนวณ
สัญลักษณ์  | ความหมาย  | 
t()  | Transpose  | 
det()  | Determinant  | 
solve()  | Inverse matrix  | 
A*B  | การคูณของสมาชิกในเมตริกซ์  | 
A%*%B  | การคูณเมตริกซ์  | 
colMeans()  | การหาค่าเฉลี่ยเมตริกซ์ของแต่ละคอลัมน์  | 
rowMeans()  | การหาค่าเฉลี่ยเมตริกซ์ของแต่ละแถว  | 
colSums()  | การหาค่าผลรวมเมตริกซ์ของแต่ละคอลัมน์  | 
rowSums()  | การหาค่าผลรวมเมตริกซ์ของแต่ละแถว  | 
ตัวอย่าง
สังเกตว่า A*A ไม่เท่ากับ A%*%A นะครับ ระวังอย่าใช้สัญลักษณ์ผิด
โจทย์กำหนด
(1) x+2y-z = 1
(2) 2x-y+z = 3
(3) -x+2y+3z = 7
หากจะแก้สมการเพื่อหาค่า x,y,z ก็มีได้หลายวิธี โดยวิธีพื้นฐานก็คือนำสมการเหล่านี้มาบวกลบกัน
เพื่อกำจัดตัวแปรออกไปทีละตัว จนได้คำตอบตัวแปรใดตัวแปรหนึ่งแล้วค่อยเอาไปแทนค่าหาตัวแปรที่เหลือ
ในที่นี้เราจะใช้โปรแกรม R คำนวณหาคำตอบให้ โดยคำนวณแบบเมตริกซ์
ก่อนอื่นต้องเปลี่ยนรูปร่างของสมการเหล่านี้ให้เป็นเมตริกซ์ Ax = B ก่อน
โดยดึงสัมประสิทธ์ของแต่ละตัวแปรออกมาเป็นเมตริกซ์ A ส่วนเมตริกซ์ x คือตัวแปร x,y,z
และเมตริกซ์ B คือคำตอบ
หาค่า x โดยคูณ Inverse A ด้านหน้าทั้ง 2 ข้าง
x = (Inverse A)B
จากนั้นแก้สมการโดยใชัสัญลักษณ์คือ
solve(A,B) ก็จะได้ x
หากคิดทีละขั้นตอน กำหนดเมตริกซ์ H คือ Inverse A
x = Inverse(A)%*%B นั่นคือ x = H%*%B
ถ้าใช้ solve(A,B) ก็จะได้ค่า x เท่ากัน
เพราะฉนั้นคำตอบคือ x=1, y=1, z=2
กำหนดเมตริกซ์ A และ B จงหา (A2 - B2)t
จงหา det(C)
จงหา Inverse K
กำหนดให้
(1) a-b+c+d = 8
(2) a+b-c+d = 6
(3) a+b-c-d = 0
(4) a-b-c+d = 4
จงหาค่า c
เพราะฉนั้น c=2
 















