تاکنون با اسکالرها (اعداد) کار کرده ایم، اما نرم افزار R برای کار با بردارها vectors نیز طراحی شده است. تابع c ( که مخفف catenate به معنای متصل نمودن، یا در صورت تمایل، concatenate می باشد)،

می تواند برای ایجاد بردارهایی از اسکالرها یا دیگر بردارها مورد استفاده قرار گیرد:

 
> x <- c(1,3,5,7)
> x
[1] 1 3 5 7
 

عملگر دو نقطه : می تواند برای ایجاد دنباله ای از اعداد مورد استفاده قرار گیرد.

 
> x <- 1:10
> x
[1] 1 2 3 4 5 6 7 8 9 10
 

شما همچنین می توانید از تابع seq برای ایجاد یک دنباله باتوجه به نقاط شروع و پایان و مقدار افزایش استفاده کنید. به عنوان مثال، در اینجا یازده عدد بین 0 و 1 با فواصل 0.1 وجود دارد:

 
> seq(0, 1, 0.1)
 [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
 

تابع rep برای تکرار (repeat) ، تابع دیگری است که برای ایجاد بردارها سودمند می باشد. به عنوان مثال، rep(3,4) عدد سه را چهار بار تکرار می کند.

اولین آرگومان می تواند یک بردار باشد، بنابراین rep(x,3) ، کل بردار x را سه بار تکرار می نماید.

اگر هر دو آرگومان، بردارهای هم اندازه باشند، هریک از مولفه های بردار اول به میزان بیان شده توسط مولفه ی متناظر در بردار دوم تکرار می گردند. این مثال را در نظر بگیرید:

 
> rep(1:3, 2)
[1] 1 2 3 1 2 3
> rep(1:3, c(2,2,2))
[1] 1 1 2 2 3 3
 

اولین فراخوانی، بردار 1:3 را دو بار تکرار می کند.

دومین فراخوانی، هریک از مولفه های 1:3 را دو بار تکرار کرده و می تواند بصورت rep(1:3, rep(2,3)) نوشته شود که یک مدل رایج در نرم افزار R می باشد.

عملیات نرم افزار R بصورت بردار در‌آمده‌اند. اگر x یک بردار باشد، log(x) برداری با لگاریتم مولفه های x خواهد بود.

عملگرهای محاسباتی و رابطه ای نیز، مولفه به مولفه کار می کنند.

اگر x و y بردارهایی با طول یکسان باشند، x+y برداری با مولفه هایی برابر با مجموع مولفه های متناظر x و y خواهد بود.

اگر y یک اسکالر باشد، به هریک از مولفه های x اضافه می شود.

اگر x و y بردارهایی با طول متفاوت باشند، بردار کوتاه تر به تعداد مورد نیاز تکرار میگردد، حتی به صورت کسری (که در این صورت، یک هشدار دریافت خواهید کرد).

عملگرهای منطقی | برای "یا" و & برای "و" نیز بصورت مولفه به مولفه کار می کنند.

(عملگرهای دوتایی || برای "یا" و && برای "و"، تنها بر روی اولین مولفه ی هر بردار عمل کرده و از ارزیابی میانبر استفاده می کنند؛ آنها غالباً برای نوشتن توابع زبان برنامه نویسی R بکار می روند و بیش از این مورد بررسی قرار نخواهند گرفت).

> a = c(TRUE, TRUE, FALSE, FALSE)
> b = c(TRUE, FALSE, TRUE, FALSE)
> a & b
[1]  TRUE FALSE FALSE FALSE
 

تعداد مولفه های یک بردار با تابع length بدست می آید.

دستیابی به مولفه های هر بردار در نرم افزار R با استفاده از اندیس در داخل انجام می شود، بنابراین x[1] اولین مولفه ی x، x[2] دومین مولفه و x[length(x)] آخرین مولفه ی آن می باشد.

خود اندیس نیز می تواند یک بردار باشد، بنابراین x[1:3] برداری متشکل از سه مولفه ی اول x می باشد.

یک اندیس منفی، مولفه ی متناظر را مستثنی می سازد، در نتیجه، x[-1] نشاندهنده ی برداری با تمام مولفه های x به جز اولین مولفه می باشد.

جالب است بدانید که عبارت داخل کروشه می تواند یک عبارت منطقی نیز باشد، که در این صورت، مولفه هایی را بدست می آورید که مقدار عبارت به ازای آن مولفه درست TRUE باشد.

به عنوان مثال، برای فهرست کردن مولفه های کوچکتر از 5 بردار x ، به طریق زیر عمل می کنیم:

> x[x < 5]
[1] 1 2 3 4
 

من این عبارت را بصورت «x به گونه ای که x کوچکتر از 5 باشد» می خوانم. این دستور به این دلیل کار میکند که خروجی x < 5 بردار زیر می باشد:

> x < 5
 [1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 

امکانات اندیس نویسی نرم افزار R (و البته نرم افزار splus) بسیار قدرتمند می باشد. ممکن است مدتی طول بکشد تا به آن عادت کنید، اما این زبان برنامه نویسی R در نهایت عادی می شود.

نرم افزار R همچنین ماتریس ها و آرایه های با بُعدهای بالاتر را می شناسد. تابع زیر یک ماتریس 3 در 4 را ایجاد نموده و آن را توسط ستون هایی با اعداد 1 تا 12 پر می کند:

> M = matrix(1:12, 3, 4)
> M
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
 

مولفه های یک ماتریس را می توان با استفاده از اندیس های سطر و ستون در داخل کروشه که با کاما ار هم جدا می شوند، بیان نمود. بنابراین، M[1,1] اولین مولفه ی M می باشد.

یک اندیس می تواند برای انتخاب کل ردیف یا ستون، خالی گذاشته شود: M[1,] اولین ردیف و M[,1] اولین ستون M می باشد.

هریک از اندیس ها می تواند یک بردار باشد، بنابراین M[1:2,1:2] ، گوشه ی دو در دوی بالا و چپ M می باشد. آن را امتحان کنید.

تعداد ردیف ها و ستون های یک ماتریس توسط توابع nrow و ncol بدست میآید.

برای بدست آوردن ترا‌نهاده (Transpose) یک ماتریس، از تابع t استفاده نمایید.

در نرم افزار R عملگر ضرب ماتریسی%*%می باشد.

> t(M)
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
[4,]   10   11   12
 

در نرم افزار R وارون سازی ماتریس بوسیله ی تابع solve انجام می شود. برای مشاهده ی مثال، به بخش رگرسیون خطی مراجعه نمایید.

تمرین: در نرم افزار R آخرین مولفه ی یک ماتریس را چگونه بیان می کنید؟

نکته : شما می توانید بدون نیاز به دانلود نرم افزار R و نصب آن دستورات را در نسخه آنلاین R که در این سایت برای شما فراهم شده آزمایش کنید.

دیدگاه‌ها  

0 #22 آموزش نرم افزار 1396-05-02 11:04
به نقل از وحید:
سلام با چه دستوری چند تا ماتریس رو توR یکی کنم که یه ماتریس بزرگتر بشه و هر ماتریس کوچک توی بخش خاصی قرار بگیره


باسلام و تشکر از تماس شما

در کامنت های قبلی نحوه ترکیب ماتریس ها توصیح داده شده است

موفق باشید
نقل قول کردن
0 #21 آموزش نرم افزار 1396-05-02 11:03
به نقل از شمیم:
ببخشید من چند یه سری داده به R فراخوانی کردم،چطوری میتونم اسم ستون ها رو عوض کنم؟؟


با سلام و تشکر از تماس شما

قسمت های بعدی این سری آموزش ها رو بخونید

موفق باشید
نقل قول کردن
0 #20 آموزش نرم افزار 1396-05-02 11:01
به نقل از mohammadreza:
با سلام
از اطلاعات خوب و مفید شما متشکرم
یه سوال داشتم اگر بخاهیم با دو یا چند ماتریس و با چند عدد تابت یه تابع یا آرگومان بنویسیم
شبیه تابع زیر منتها برای ماتریس
فرض کنیید
ماتریس a ماتریس b و مقدار n
داریم
اول می خواهیم عکس ماتریس a بگیریم و در b کنیم و نتیجه را در n تقسیم کنیم خواهشمند است در صورت امکان در دو فرمول یا تابع نحوه برنامه نویسی با مثال ساده عددی آموزش بدین
ممنون


با سلام و تشکر از تماس شما

روش نوشتن تابع در کامنت های زیر به اختصار شرح داده شده است

موفق باشید
نقل قول کردن
0 #19 آموزش نرم افزار 1396-05-02 11:00
به نقل از بتول:
سلام. دستور ln( ال ان) در نرم افزار r چگونه نوشته میشه؟ هر جور میزنم خطا میده ...

با سلام و تشکر از تماس شما

در بسیاری از زبان های برنامه نویسی لگاریتم به صورت زیر هست

log(x) natural logarithm
log10(x) common logarithm

موفق باشید
نقل قول کردن
0 #18 بتول 1396-03-09 10:43
سلام. دستور ln( ال ان) در نرم افزار r چگونه نوشته میشه؟ هر جور میزنم خطا میده ...
نقل قول کردن
0 #17 mohammadreza 1396-02-10 09:08
با سلام
از اطلاعات خوب و مفید شما متشکرم
یه سوال داشتم اگر بخاهیم با دو یا چند ماتریس و با چند عدد تابت یه تابع یا آرگومان بنویسیم
شبیه تابع زیر منتها برای ماتریس
فرض کنیید
ماتریس a ماتریس b و مقدار n
داریم
اول می خواهیم عکس ماتریس a بگیریم و در b کنیم و نتیجه را در n تقسیم کنیم خواهشمند است در صورت امکان در دو فرمول یا تابع نحوه برنامه نویسی با مثال ساده عددی آموزش بدین
ممنون
نقل قول کردن
0 #16 شمیم 1396-02-01 20:46
ببخشید من چند یه سری داده به R فراخوانی کردم،چطوری میتونم اسم ستون ها رو عوض کنم؟؟
نقل قول کردن
0 #15 وحید 1395-11-13 16:06
سلام با چه دستوری چند تا ماتریس رو توR یکی کنم که یه ماتریس بزرگتر بشه و هر ماتریس کوچک توی بخش خاصی قرار بگیره
نقل قول کردن
0 #14 آموزش نرم افزار 1395-07-07 12:08
به نقل از seeade:
با سلام چطور می تونم دستوراتی که نوشتم رو به صورت تابع در بیارم؟؟؟


با سلام و تشکر از تماس شما

خیلی ساده میشه تابع نوشت اگر با زبان های برنامه نویسی دیگه آشنا هستید خیلی مشابه هست

فرمت کلی به این شکل هست


function.name <- function(arguments) {
codes
..........
}


مثلا


> mySum <- function(x, y) {
+ z<-x+y;
+ return(z);
+ }
>
>
> mySum( 3, 4)
[1] 7
>


به زودی آموزش های تکمیلی به سایت اضافه خواهد شد
موفق باشید
نقل قول کردن
0 #13 seeade 1395-07-01 07:51
با سلام چطور می تونم دستوراتی که نوشتم رو به صورت تابع در بیارم؟؟؟
نقل قول کردن
0 #12 آموزش نرم افزار 1395-05-17 13:05
به نقل از raziye:
سلام
ممنون از سایت خوبتون. ببخشید من یه سوال دارم.
یک سری داده از توزیع پواسن شبیه سازی کردم. حالا می خوام یک سری از صدک هاشو به دست بیارم اما هر دستوری میزنم جواب نمیده. میشه راهنماییم کنید؟


با سلام و تشکر از تماس شما

سوال شما در قسمت «آموزش نرم افزار R | چاپ داده ها و خلاصه ها» لینک زیر توضیح داده شده است

www.tipy.ir/.../

موفق باشید
نقل قول کردن
+2 #11 raziye 1395-05-11 20:44
سلام
ممنون از سایت خوبتون. ببخشید من یه سوال دارم.
یک سری داده از توزیع پواسن شبیه سازی کردم. حالا می خوام یک سری از صدک هاشو به دست بیارم اما هر دستوری میزنم جواب نمیده. میشه راهنماییم کنید؟
نقل قول کردن
-1 #10 آموزش نرم افزار 1395-05-10 12:19
به نقل از seede:
با سلام ایا امکانش هست مثلث بالا و پایین یک ماتریس رو مشخص کنیم برا اساس دادهای خودمون؟؟؟


با سلام و تشکر از تماس شما

تمام عملیات ماتریسی رو می تونید با نرم افزار R انجام بدید

برای مثال با فرض اینکه M ماتریس اولیه باشه این دستورها ممکن هست شما رو به نتیجه دلخواه برسونه



M[lower.tri(M,diag = FALSE)] <- 0
M[upper.tri(M,diag = TRUE)] <- 0



موفق باشید
نقل قول کردن
0 #9 seede 1395-05-09 20:15
با سلام ایا امکانش هست مثلث بالا و پایین یک ماتریس رو مشخص کنیم برا اساس دادهای خودمون؟؟؟
نقل قول کردن
0 #8 آموزش نرم افزار 1395-04-13 16:15
به نقل از من:
سلام
آیا نرم افزار آر امکانی داره که بشه دترمینان یا معکوس ماتریسهایی را حساب کند که عناصر آنها بجای عدد حروف هستند؟
متشکرم


با سلام و تشکر از تماس شما

اگر درست متوجه منظور شما شده باشم

چیزی که شما مد نظرتون هست رو عملیات سیمبولیک میگویند

که عملیات ریاضی با متغیر ها انجام بشه بدون اینکه مقدار صریح اونها مشخص باشه

جواب: بله! عملیات سیمبولیک در نرم افزار R امکان پذیر هست ، و از طریق دو یسته مختلف می تونید این کار رو انجام بدید.

۱- پکیج Ryacas که اینترفیسی هست بر نرم افزار Yacas در نرم افزار R و باید Yacas رو نصب کرده باشید.
code.google.com/p/ryacas/
yacas.sourceforge.net/

۲- پکیج rSymPy که اینترفیسی هست بر نرم افزار SymPy در نرم افزار R و باید SymPy رو نصب کرده باشید.
rsympy.googlecode.com/

به زودی آموزش نرم افزار SymPy رو در سایت قرار خواهیم داد

موفق باشید
نقل قول کردن

نوشتن دیدگاه


 

آموزش های گام به گام

چهارمین کارگاه ارتباطات و نظریه اطلاعات برگزار می شود

چهارمین کارگاه ارتباطات و نظریه اطلاعات
چهارمین کارگاه ارتباطات و نظریه اطلاعات

ادامه مطلب...

سمینار خانه های هوشمند برای دوران پیری

سمینار خانه های هوشمند برای دوران پیری

ادامه مطلب...

چهارمین کارگاه ارتباطات و نظریه اطلاعات برگزار می شود

چهارمین کارگاه ارتباطات و نظریه اطلاعات
چهارمین کارگاه ارتباطات و نظریه اطلاعات

ادامه مطلب...

چهارمین کارگاه ارتباطات و نظریه اطلاعات برگزار می شود

چهارمین کارگاه ارتباطات و نظریه اطلاعات
چهارمین کارگاه ارتباطات و نظریه اطلاعات

ادامه مطلب...