احتراما به استحضار می رساند که خانم سارا باقری (فارغ التحصیل دانشگاه پیام نور اصفهان)، در مقطع کارشناسی خود پایان نامه ای را با موضوع (بررسي نرم افزار R) به اتمام رسانده اند که از آن می توان به عنوان یکی از بهترین منابع موجود فارسی برای آموزش R (و البته تنها منبع کامل ) نام برد. باعث مباهات اینجانب می باشد که با اجازه ایشان بتوانم در محیط آماری کوچک خود، کار بزرگ ابشان را درج نمایم. از دوستان و آماری های عزیز که در آینده از این مطالب استفاده می کنند خواهشمندیم از قید نام گرداورنده مطلب دریغ ننمایند.

2.1 بردارها

 

2.1.1     بردارها و انتساب

عمل نسبت دادن يك عدد،كاراكتر،تابع يا بردار،...به يك متغير را عمل انتساب گويند.

دستور زير عدد2را در متغير x قرار مي دهد:

> x <-2

دستور زير برداري به نام x مي سازد كه شامل 5عدد مي باشد:

> x <-c(10.4, 5.6, 3.1, 6.4, 21.7)

مي توان بجاي دستور فوق از دستور زير استفاده كرد:

> assign("x", c(10.4, 5.6, 3.1, 6.4, 1.7))

دستور زير هر عضو بردار x را معكوس مي كند:

> 1/x

دستور زير شامل دو كپي از x و مقدار صفر در وسط دو كپي مي باشد.

> y <-c(x, 0, x)

 

2.1.2    عمليات روي بردارها

بردارها مي توانند به عنوان عبارتهاي جمعي يا ضربي بيان شوند در اين صورت عملگرها روي عضو به عضو بردارها ايفاي نقش مي كنند.در اين صورت بردارها بايد با طول هاي مساوي باشند. عملگرهاي اصلي مورد استفاده +،-،*،/،^ مي باشند كه بترتيب جمع،تفريق،ضرب و تقسيم و توان را انجام مي دهند. علاوه بر آن تابع هاي مشترك قابل دسترسي cos, sin, exp, log, sqrt, tan مي باشند.

تابع (min(x), max(x  بترتيب بزرگترين و كوچكترين عضو بردار x را مي دهند. (Range(x تابعي است كه مقدار آن برداري كه شامل دو عضو مي باشد: ((c(min(x),max(x.

Length(x) تعداد عناصر بردار x را مي دهد و (sum(x جمع عناصرx را مي دهد و (prod(x ضرب عناصر x را مي دهد و (mean(x ميانگين عناصرx را مي دهد كه مشابه دستور:

> sum(x)/length(x)

مي باشد. و (var(x واريانس نمونه را مي دهد كه مشابه دستور زير مي باشد:

> Sum((x-mean(x))^2)/(length(x)-1)

(Sort(x عناصر بردار x را به صورت صعودي مرتب مي كند.

در كاركردن با اعداد مختلط اگر دستور زير را اجرا كنيم:

> sqrt(-17)

جواب  NaN مي باشد. بجاي آن بايد از دستور زير استفاده كنيم:

> Sqrt(-17+0i)

بردارها مي توانند عددي،كاراكتري يا منطقي باشند. دستور زير جنس بردار x را مي دهد:

> mode(x)

 

2.1.3    توليد دنباله هاي منظم

R يك تعداد از امكانات براي توليد دنباله اي از اعداد همچنين كاراكترها دارد براي مثال1:30 بردار

(c(1, … ,30مي باشد.

عملگر دو نقطه(":") در يك عبارت داراي اولويت اول مي باشد. براي مثال 2*1:15 بردار (c(2,4,…,28,30 مي باشد.ساختار30:1 براي توليد دنباله هاي معكوس به كار مي رود.

تمرین: 10را درn قرار دهيد(n<-10) عبارت 1:n-1 و1:(n-1) را باهم مقايسه كنيد.

 تابع   ()seqبراي توليد دنباله ها بكار مي رود كه پنج شناسه دارد و تنها تعدادي از آنها ممكن است صدا زده شوند. اگر دو آرگيومنت داده شود اولي ابتداي دنباله و دومي انتهاي دنباله مي شود و نتيجه شبيه عملگر(":")  مي باشد. (seq(2,10برداري شبيه 2:10 مي باشد. پارامترها در تابع ()seq و همچنين در بسياري از تابع هايR مي توانند به فرم نامگذاري شده باشند. دو پارامتر در تابع  ()seq و همچنين در بسياري از تابع هاي R مي توانند به فرم نامگذاري شده باشند. دو پارامتر اول تابع  ()seq بصورت from=value وto=value نامگذاري مي شوند بدين طريق (seq(1,30  و (seq(from=1, to=30  و
(seq(to=30, from=1 همه با1:30 مشابه اند.دو پارامتر ديگر تابع  ()seq بصورت by=value وlength=value نامگذاري مي شوند كه بترتيب اندازه ي گام و طول دنباله را نشان مي دهند اگر هيچكدام از اينها داده نشده باشد by=1بصورت پيش فرض در نظر گرفته مي شود.براي مثال:

> seq(-5,5,by=.2)->s3

درs3بردار (c(-5.0,-4.8,-4.6,…,4.6,4.8,5.0  را توليد مي كند. به طور مشابه:

> s4 <-seq(length=51,from=-5,by=.2)

بردار مشابه در s4 توليد مي كند.

پنجمين پارامتر كه در ()seq استفاده مي شود بصورت:along=vector نامگذاري مي شود كه تنها بكار برده مي شود و دنباله (1,2,…,length(vector را توليد مي كند. وتابع ديگري به نام ( )rep براي تكرارها بكار مي رود. فرم ساده آن بصورت زير مي باشد:

> s5 <-rep(x,times=5)

كه پنج كپي از x را در s5 قرار مي دهد.

  

2.1.4    بردارهاي منطقي

مقادير بردارهاي منطقي عبارتند از NA,FALSE,TRUE  (براي مواقعي كه قابل دسترسي نباشد). دوتاي اولي بطور خلاصه بترتيب بصورت F,T  بكار مي روند. بردارهاي منطقي توسط شرطها توليد مي شوند.

عملگرهاي منطقي عبارتند از │,&,! =,= =,>=,>,<=,<، كه بترتيب از سمت چپ، كوچكتر، كوچكتر مساوي، بزرگتر، بزرگتر مساوي، مساوي، نامساوي،"و"،"يا"، را مي رسانند. بردارهاي منطقي ممكن است مجبور شوند به بردارهاي عددي تبديل شوند در اين صورت FALSE به عدد صفر و TRUE به عدد يك تبديل مي شوند.

 

2.1.5   مقادير گمشده

در بعضي موارد اجزايي از يك بردار ممكن است كاملا شناخته شده نباشد. هنگامي كه يك عضو يا يك مقدار قابل دسترسي نباشد يا يك مقدار گمشده(در اصطلاح آماري)، يك جا در بين يك بردار توسط يك مقدار خاص NA در نظر گرفته مي شود. به طور كلي هر عمل روي يك Na يك NA مي شود.

تابع (is.na(x يك بردار منطقي با اندازه ي يكسان با x با مقدار TRUE مي دهد اگر و تنها اگر در x عنصر متناظر، NA  باشد.

> z <- c(1:3,NA); ind<-is.na(z)

توجه كنيد كه عبارت منطقي x=NA كاملا با فرم (is.na(x متفاوت است. از آنجا كهNA  واقعا يك مقدار نيست اما يك علامت براي يك كميتي كه قابل دسترسي نيست بكار مي رود و x=NA يك بردار با طول مشابه با x كه همه ي مقادير آن NA  مي باشند و بعنوان يك عبارت منطقي خودش ناكامل است.

نوع دومي از مقادير گمشده وجود دارد كه توسط محاسبات عددي بدست مي آيند و مقادير NaN Not a) (Number ناميده مي شوند. بطور مثال:

> 0/0

يا

> Inf-Inf

كه هر دو جواب NaN  مي دهند.

به طور خلاصه (is.na(xx، براي مقادير TRUE ,NaN ,NA مي باشد و (is.nan(xxتنها براي NaNها TRUE مي باشد.

 

2.1.6   بردارهاي كاراكتري

كميت هاي كاراكتري و بردارهاي كاركتري بطور فراوان در R استفاده مي شوند. براي مثال براي برچسب هاي يك نمودار بكار مي روند، جايي كه لازم مي شود توسط يك دنباله از كاراكترهاي با حدود تعيين شده در داخل گيومه نشان داده شوند.

رشته هاي كاركتري توسط (") يا( ׳) وارد مي شوند اما چاپ آنها با علامت (") مي باشد.

تابع ( ) pasteيك تعداد دلخواه از شناسه ها و زنجيره اي از رشته هاي كاركتري مي دهد. براي مثال:

> labs <-paste(c("x","y"),1:10,sep="")

بردار كاراكتري زير را مي دهد:

C("x1","y2","x3","y4","x5","y6","x7","y8","x9","y10")

براي از بين بردن فاصله ي بين اعداد و حروف x وy از sep استفاده مي كنيم. اگر sep را قرار ندهيم براي مثال "x1" بصورت "x 1" نوشته مي شود. براي توليد حروف الفبا از []letters استفاده مي كنيم. بطور مثال [letters[1:5 حروف a تا e را توليد مي كند.

 

2.1.7  بردارهاي شاخص؛ انتخاب كردن و تغيير دادن زير مجموعه اي از يك مجموعه داده

زيرمجموعه اي از اعضاي يك بردار توسط ضميمه كردن نام بردار و بردار شاخص در داخل براكت ها انتخاب مي شود. بردارهاي شاخص مي توانند هر يك از چهار حالت متفاوت زير باشند:

  1. يك بردار منطقي : در اين مورد بردار شاخص بايد طولي مساوي با فرم برداري كه اعضاي آن انتخاب مي شوند باشد. مقادير متناظر با TRUE در بردار شاخص انتخاب مي شوند و آنهايي كه متناظر با FALSE هستند حذف مي شوند. براي مثال:

> y <- x[!is.na(x)]

كه yشامل مقادير غيرگمشده x  در ترتيب مشابه مي باشد.

توجه كنيد كه اگر x داده ي گمشده داشته باشد،طول y كوچكتر از x مي باشد. همچنين:

> (x+1)[(is.na(x))&x>0]->z

Object z را مي سازد و مقاديري از بردار x+1 را جايگذاري مي كند كه مقدار متناظر در x، هم داده غير گمشده و هم مثبت باشد. بعنوان چند مثال ديگر دستور زير:

> x[is.na(x)] <-0

مقادير گمشده x را با صفر جايگزين مي كند و دستور زير:

> y[y<0] <-  -y[y<0]

مشابه دستور:

> y <-abs(y)

مي باشد.

  1. يك بردار از مقادير مثبت : در اين مورد، مقادير بردار شاخص بايد در مجموعه ي زير باشند:

{1,2,3,…,length(x)}

بعبارتي ديگر زير مجموعه اي از مجموعه ي فوق باشند. براي مثال [x[6 ششمين عضو از بردار x را مي دهد دستور زير ده عضو اول بردار x (با فرض اينكه (length(x كمتر از 10نباشد.) را مي دهد:

> x[1:10]

همچنين:

> c("x","y")[rep(c(1,2,2,1),times=4)]

يك بردار كاراكتري به طول 16 كه شامل "x","y","y","x" كه چهار بار تكرار شده اند مي باشد.

تمرین: نتیجه بردار

> c(10,12)[rep(c(1,2,1,10),times=2)]

را حدس بزنید و سپس آن را با خروجی نرم افزار مقایسه کنید؟

3.  يك بردار از مقادير منفي : كه شامل نشدن عضوهاي يك بردار را مي رسانند. براي مثال:

> y <- x[-(1:5)]

Y، بردارx بدون پنج عضو اول آن مي باشد.

4. يك بردار از رشته هاي كاراكتري : جاهايي كه يك object، نسبت اسمي دارد براي شناسايي اجزاي آن بكار مي رود. در اين مورد يك زير بردار از بردار نامها به روش مشابه در برچسب هاي مثبت در قسمت 2 كه بحث شد استفاده مي شود:

> fruit <- c(5,10,1,20)

> names(fruit) <- c("orange","banana","apple","peach")

> lunch <- fruit[c("apple","orange")]

كه جواب بصورت زير مي باشد:

Apple          orange

        1                   5