نام دانشجو : مریم خادمی
استاد مربوطه : آقای خاورزاده
«ماتریس»
یکی از خصوصیات مهم در بین همه ویژگی های قدرتمند زبان  R،  توانایی تشکیل ماتریس (MATRIX) و انجام عملیات جبری روی آنهاست.طبق تعریف ماتریس مجموعه ای از اعداد میباشد که در تعدادی ردیف و یا ستون مرتب شده اند.ویژگی های اصلی داده های ماتریس در R این است که همه داده های یک ماتریس از یک نوع می باشد.به عنوان مثال ،همه آنها عددی و یا همه آنها حرفی باشند.هر عدد ماتریس یک عنصر نامیده می شود.برای ایجاد ماتریس از تابع ()matrix استفاده می شود.برای این منظور ابتدا تعداد ردیف (nr و یا nrow ) و تعداد ستون ( nc و یا ncol )تعریف می گردد.در واقع ماتریس بسط بردار است.
تابع در مثال زیر ابتدا یک توالی ۱۲ عددی توسط ()seq ایجاد و سپس با استفاده از تابع ()Matrixدر۳ ردیف و ۴ ستون یک ماتریس مرتب شده اند.

matrix(seq(1:12),nrow=3,ncol=4)
  [,۱] [,۲] [,۳] [,۴]
[۱,] ۱     ۴    ۷   ۱۰
[۲,] ۲    ۵     ۸   ۱۱ 
[۳,] ۳    ۶     ۹   ۱۲

 اگر بخواهیم به یک درایه از ماتریس دست پیدا کنیم از  [A[i,j استفاده می کنیم.مثال:

a<-c(1,2,3,4,5,6,7,8,9,10)
> d<-matrix(a,2,5)
> d
[,۱] [,۲] [,۳] [,۴] [,۵]
[۱,] ۱     ۳    ۵    ۷    ۹
[۲,] ۲    ۴    ۶    ۸    ۱۰
> d[2,4]
[۱]۸

همان طور که مشاهده می شود عنصر ردیف دوم در ستون چهارم عدد ۸ می باشد.
برای دستیابی به کل عناصر یک ردیف یا ستون به صورت زیر انجام می دهیم.

d[,2]
[۱] ۳ ۴

ستون دوم ماتریس d ⇑

d[1,]
[۱] ۱ ۳ ۵ ۷ ۹

ردیف اول ماتریس d ⇑
در پیش فرض زبان R عناصر به صورت ستونی در سلول های ماتریس جایابی می شوند.برای اینکه نحوه جایابی به شکل ردیفی باشد از دستور byrow=T استفاده می شود.

x<-matrix(1:6,nrow=2,ncol=3)
> x
[,۱] [,۲] [,۳]
[۱,] ۱     ۳    ۵
[۲,] ۲     ۴    ۶
> x<-matrix(1:6,nrow=2,ncol=3,byrow=T)
> x
[,۱] [,۲] [,۳]
[۱,] ۱     ۲    ۳
[۲,] ۴     ۵    ۶

♦تابع ()dim
این تابع ابعاد ماتریس را در اختیار قرار می دهد.در مثال زیر ابعاد ماتریس d در مثال قبلی که دارای ۲ ردیف و ۵ ستون است نشان داده شده است.

dim(d)
[۱] ۵۲

همچنین برای تبدیل بردار به ماتریس می توان از تابع ()dim استفاده نمود.در مثال زیر بردار a با استفاده از این تابع به یک ماتریس با ابعاد ۲×۵ تبدیل شده است:

a<-c(1,2,3,4,5,6,7,8,9,10)
> dim(a)<-c(5,2)
> a
[,۱] [,۲]
[۱,] ۱    ۶
[۲,] ۲    ۷
[۳,] ۳    ۸
[۴,] ۴    ۹ 
[۵,] ۵   ۱۰

از تابع ()dim برای تبدیل ماتریس به یک بردار نیز استفاده می شود.برای این کار باید ابعاد ماتریس را از بین ببریم:

dim(a)<-NULL
> a
[۱] ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰

با استفاده از تابع () dimمی توان یک ماتریس را به چند ماتریس کوچکتر تفکیک نمود.اولین عدد داخل پرانتز تعداد ردیف،عدد دوم تعداد ستون و سومین عدد تعداد ماتریس هاست.در اینجا ماتریس a دو ماتریس ۵×۱ تبدیل می شود:
> dim(a)<-c(1,5,2)
        > a
, , ۱
             [,۱] [,۲] [,۳] [,۴] [,۵]
        [۱,] ۱    ۲     ۳    ۴    ۵
        , , ۲
             [,۱] [,۲] [,۳] [,۴] [,۵]
        [۱,] ۶     ۷    ۸    ۹   ۱۰
♦تابع ()as.vector
برای تبدیل ماتریس ها به بردار از تابع ()as.vector نیز می توان استفاده نمود.در مثال زیر a که یک ماتریس ۵ در ۲ است که به یک بردار تبدیل شده است:

a<-matrix(1:10,nr=5,nc=2)
> a
[,۱] [,۲]
[۱,] ۱    ۶ 
[۲,] ۲    ۷
[۳,] ۳    ۸
[۴,] ۴    ۹
[۵,] ۵    ۱۰
> b<-as.vector(a)
> b
[۱] ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹ ۱۰

♦تابع ()as.matrix
این تابع بردار یا داده های چارچوب دار را به یک ماتریس تبدیل می کند.

c<-as.matrix(b)
> c
[,۱]
[۱,] ۱
[۲,] ۲
[۳,] ۳
[۴,] ۴
[۵,] ۵
[۶,] ۶
[۷,] ۷
[۸,] ۸
[۹,] ۹
[۱۰,]۱۰

♦تابع()t
ترانهاده یک ارایه توسط تابع ()t حاصل می شود.مثال:

a
[,۱] [,۲]
[۱,] ۱ ۶
[۲,] ۲ ۲۷
[۳,] ۳ ۸
[۴,] ۴ ۹
[۵,] ۵ ۱۰
> t(a)
[,۱] [,۲] [,۳] [,۴] [,۵]
[۱,] ۱    ۲     ۳     ۴     ۵
[۲,] ۶    ۷    ۸      ۹   ۱۰

♦عملگر%*%
برای ضرب کردن دو ماتریس از عملگر%*%استفاده می شود.در مثال زیر ماتریس m با ابعاد ۲×۳ در ماتریس n با ابعاد۲×۲ ضرب می شوند که حاصل آنها یک ماتریس ۲×۳ می باشد:

m<-matrix(c(4,2,1,3,4,2),3,2)
> m
[,۱] [,۲]
[۱,] ۴ ۳
[۲,] ۲ ۴
[۳,] ۱ ۲
n<-matrix(c(5,2,1,2),2,2)
> n
[,۱] [,۲]
[۱,] ۵ ۱
[۲,] ۲ ۲
m%*%n
[,۱] [,۲]
[۱,] ۲۶  ۱۰
[۲,] ۱۸  ۱۰
[۳,] ۵   ۹

اگر از علامت «*»بین دو ماتریس استفاده شود حاصل ضرب نظیر به نظیر عناصر در خروجی نشان داده می شود.مثال:

z<-matrix(2,nrow=2,ncol=2)
> z
[,۱] [,۲]
[۱,] ۲ ۲
[۲,] ۲ ۲
s<-matrix(3,nrow=2,ncol=2)
> s
[,۱] [,۲]
[۱,] ۳ ۳
[۲,] ۳ ۳
> s*z
[,۱] [,۲]
[۱,] ۶    ۶
[۲,] ۶    ۶ 

♦تابع ()det
دترمینانت یک ماتریس مربع را می توان با استفاده از تابع ()det به دست آورد:

a<-matrix(c(1,2,4,6),nrow=2)
> a
[,۱] [,۲]
[۱,] ۱    ۴
[۲,] ۲    ۶
> det(a)
[۱] -۲

♦تابع ()diag
برای استخراج ویا تغییر درایه های قطری ویا ساختن ماتریس قطری تابع ()diag به کار می رود.مثال:

z<-matrix(1:4,nr=2,nc=2)
> z
    [,۱] [,۲]
[۱,] ۱ ۳
[۲,] ۲ ۴
> diag(z)
[۱] ۱ ۴
> diag(z)<-8
> z
  [,۱] [,۲]
[۱,] ۸ ۳
[۲,] ۲ ۸
> diag(3)
[,۱] [,۲] [,۳]
[۱,] ۱ ۰ ۰
[۲,] ۰ ۱ ۰
[۳,] ۰ ۰ ۱

♦تابع ()dimnames
برای نامگذاری سطرها و ستون های یک ماتریس از این تابع ()dimnames استفاده میشود.مثال:

> z<-matrix(1:4,nr=2,nc=2)
> z
[,۱] [,۲]
[۱,] ۱    ۳  
[۲,] ۲    ۴
> dimnames(z)<-list(c(“A”,”B”),c(“C”,”D”))
> z
C D
A 1 3
B 2 4

♦تابع ()solve
معکوس یک ماتریس مربعی را می توان با استفاده از تابع ()solve به صورت زیر به دست آورد:

n<-matrix(c(5,2,1,2),2,2)
> n
[,۱] [,۲]
[۱,] ۵ ۱
[۲,] ۲ ۲
> solve(n)
[,۱] [,۲]
[۱,] ۰.۲۵ -۰.۱۲۵
[۲,] -۰.۲۵ ۰.۶۲۵

♦تابع ()eigen
مقدار ویژه و بردار ویژه ماتریس ها را می توان با تابع ()eigen به دست آورد:
> eigen(n)
$values
[۱] ۵.۵۶۱۵۵۳ ۱.۴۳۸۴۴۷
$vectors
    [,۱] [,۲]
[۱,] ۰.۸۷۱۹۲۸۲ -۰.۲۷۰۳۲۳۰
[۲,] ۰.۴۸۹۶۳۳۷ ۰.۹۶۲۷۶۹۷
ودر این قسمت« valuses »مقدار ویژه و «vectors»بردارویژه را نشان میدهد.
♦تابع ()rbind
در مثال زیر بردار ردیفی (۱۰۰و۲۰۰)به ماتریس n افزوده شده است.تعداد ردیف ها در ماتریس جدید (n2)از ۲ به ۳ افزایش یافته است:
> n2<-rbind(n,c(100,200))
> n2
[,۱] [,۲]
[۱,] ۵   ۱
[۲,] ۲   ۲
[۳,] ۱۰۰ ۲۰۰
♦تابع()cbind
در مثال زیر بردار ستونی (۳۰۰و۲۰۰و۱۰۰)به ماتریس n2 افزوده شده است.تعداد ستون ها در ماتریس جدید (n3) از ۲ به ۳ افزایش یافته است:
> n3<-cbind(n2,c(100,200,300))
> n3
[,۱] [,۲] [,۳]
[۱,] ۵    ۱  ۱۰۰
[۲,] ۲    ۲  ۲۰۰
[۳,] ۱۰۰ ۲۰۰ ۳۰۰
♦عملگر%/%
با استفاده از دستور« %/% » می توان خارج قسمت تقسیم را به دست آورد.مثال:

۵۰%/%۶
[۱]۸

♦عملگر%%
با استفاده از دستور«%%» می توان باقی مانده را به دست آورد.مثال:

۵۰%%۶
[۱]۲

♦تابع()abs
با استفاده از تابع()abs می توان قدر مطلق را نشان داد.مثال:

a<-c(-2,-6,7,-4)
> a
[۱] -۲ -۶ ۷ -۴
> abs(a)
[۱] ۲ ۶ ۷ ۴
> a<-matrix(c(1,-4,-7,2),nr=2,nc=2)
> a
[,۱] [,۲]
[۱,] ۱ -۷
[۲,] -۴ ۲
> abs(a)
[,۱] [,۲]
[۱,] ۱ ۷
[۲,] ۴ ۲

♦دستور ()ceiling و () floor
با استفاده از دستور ()ceiling اولین عدد صحیح بزرگتر و () floor اولین عدد صحیح کوچکتر رامی توان نشان داد.مثال:

x<-c(-2,-1.5,-1,2,1,2.5)
> a
[,۱] [,۲]
[۱,] ۱ -۷
[۲,] -۴ ۲
> ceiling(x)
[۱] -۲ -۱ -۱ ۲ ۱ ۳
> floor(x)
[۱] -۲ -۲ -۱ ۲ ۱ ۲

♦تابع ()exp
با استفاده از دستور ()exp می توان تابع نمایی را نشان داد.مثال:

exp(3)
[۱]۲۰.۰۸۵۵۴

♦تابع()gamma
با استفاده از دستور ()gammaمی توان گاما عدد مورد نظر را به دست آورد.مثال:

gamma(3)
[۱] ۲

♦تابع()lgamma
با دستور()lgamma میتوان لگاریتم عدد مورد نظر را به دست آورد.مثال:

lgamma(3)
[۱] ۰.۶۹۳۱۴۷۲

♦تابع ()log
برای بدست آوردن لگاریتم طبیعی یک عدد از دستور ()Logاستفاده میکنیم.مثال:

log(10)
[۱] ۲.۳۰۲۵۸۵
> log(8)
[۱] ۲.۰۷۹۴۴۲

♦تابع ()log10
برای بدست آوردن لگاریتم یک عدد در مبنای ۱۰ از دستور()Log10استفاده میکنیم.مثال:

log10(10)
[۱] ۱
> log10(2)
[۱] ۰.۳۰۱۰۳

♦تابع ()rank
با استفاده از دستور()rankداده ها از کوچک به بزرگ رتبه بندی مشود.مثال:

rank(c(14,5,8,4))
[۱]۴ ۲ ۳ ۱

♦تابع()sort
با استفاده از دستور()sortداده ها از کوچک به بزرگ مرتب می شود.مثال:

sort(c(14,5,8,4))
[۱] ۴ ۵ ۸ ۱۴

♦تابع()order
دستورorder()همان کار ()rankرا انجام میدهد.مثال:

order(c(14,5,8,4))
[۱] ۴ ۲ ۳ ۱

♦تابع()summary
با استفاده از دستور()summaryمی توان مقدار مینیمم،ماکسیمم،میانگین،میانه،چارک اول و سوم رانشان داد.مثال:
> summary(c(14,5,8,4))
Min. 1st Qu. Median Mean 3rd Qu. Max.
۴.۰۰ ۴.۷۵ ۶.۵۰ ۷.۷۵ ۹.۵۰ ۱۴.۰۰
♦تایع()sin و ()cos
با دستورSin() و Cos() میتوان مقادیر مورد نظر را بدست آورد.مثال:

sin(45)
[۱] ۰.۸۵۰۹۰۳۵
> cos(45)
[۱]۰.۵۲۵۳۲۲

♦تابعD(expression())
با استفاده از دستور(() D(expressionمی توان از معادله مورد نظر مشتق گرفت.مثال:
> D(expression(7*x^4+2*x*y),”x”)
۷ * (۴ * x^3) + ۲ * y
> D(expression(7*x^4+2*x*y),”y”)
۲ * x
♦تابع()polyroot
با استفاده از دستور polyroot()میتوان ریشه های معادله را به دست آورد.مثال:
۲x^2-3x+1=0که فقط ضرایب معادله را در دستور می نویسیم.
> polyroot(c(2,-3,1))
[۱] ۱+0i 2-0i
با دستور زیر می توان ریشه های چند معادله و چند مجهوله را بدست آورد.مثال:
۵x+2z+3w=7
۶x+7y+8z+2w=9
۷x+9y+4z+w=10
۸x+10y+7z+w=3
> a<-matrix(c(5,6,7,8,0,7,9,10,2,8,-4,7,3,2,1,1),nr=4)
> dimnames(a)<-list(c(1,2,3,4),c(“x”,”y”,”z”,”w”))
> a
x y z w
۱ ۵ ۰ ۲ ۳
۲ ۶ ۷ ۸ ۲
۳ ۷ ۹ -۴ ۱
۴ ۸ ۱۰ ۷ ۱
> solve(a,c(7,9,10,3))
x y z w
-۲.۹۱۹۸۶۰۶ ۲.۲۸۲۲۳۰۰ -۰.۵۷۸۳۹۷۲ ۷.۵۸۵۳۶۵۹