در این آموزش نحوه کار با ماتریس ها در R را خواهید آموخت:
- مدرس: افشین متولی
- سایت: آر استودیو
- سطح آموزش: مبتدی
ماتریس یک ساختار داده ای دو-بعدی در زبان برنامه نویسی R است. برای پی بردن به ابعاد یک ماتریس از دستور
dim()
و برای مشخص شدن ویژگی های یک شیء از دستور
attributes
استفاده می شود.
نحوه ساختن یک ماتریس در R:
شما می توانید به طریق زیر در R ماتریس ایجاد کنید:
1 2 3 4 5 6 7 8 9 10 11 |
matrix(1:9, nrow = 3, ncol = 3) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 # اگر حتی یکی از ابعاد مانند تعداد سطر را هم تعیین کنید همین نتیجه حاصل می شود matrix(1:9, nrow = 3) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 |
در این دستور nrow تعداد سطرها، ncol تعداد ستون ها، byrow پر کردن درایه های ماتریس به صورت سطری است. به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 |
matrix(1:9, nrow=3, byrow=TRUE) # درایه ها به صورت سطری پر می شوند [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 matrix(1:9, nrow=3, byrow=FALSE) # درایه ها به صورت ستونی پر می شوند [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 5 9 |
نامگذاری سطر و ستون ماتریس در R
برای این کار در همان دستور ماتریس، از آرگومان dimnames استفاده می کنیم:
1 2 3 4 5 6 |
x <- matrix(1:9, nrow = 3, dimnames = list(c("X","Y","Z"), c("A","B","C"))) x A B C X 1 4 7 Y 2 5 8 Z 3 6 9 |
برای تغییر نام سطرها و ستون ها در ماتریس از دستورات زیر استفاده کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# r-studio.ir colnames(x) [1] "A" "B" "C" rownames(x) [1] "X" "Y" "Z" # همواره اسامی سطر و ستون قابل تغییر هستند colnames(x) <- c("C1","C2","C3") rownames(x) <- c("R1","R2","R3") x C1 C2 C3 R1 1 4 7 R2 2 5 8 R3 3 6 9 |
ساختن ماتریس با استفاده از دستور cbind و rbind:
این دو دستور به ترتیب داده ها را به صورت ستونی و سطری با هم ترکیب می کنند. به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 |
cbind(c(1,2,3),c(4,5,6)) [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 rbind(c(1,2,3),c(4,5,6)) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 |
برای این که مطمئن شوید یک متغیر، ماتریس است یا خیر از دستور class استفاده کنید. همچنین برای ساختن ماتریس از یک بردار از دستور dim به صورت زیر استفاده می کنید:
1 2 3 4 5 6 7 8 9 10 11 12 |
x <- c(1,2,3,4,5,6) # بردار مورد نظر x [1] 1 2 3 4 5 6 class(x) [1] "numeric" dim(x) <- c(2,3) # تبدیل کردن بردار به ماتریس با تعریف کردن ابعاد جدید x [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 class(x) [1] "matrix" |
دسترسی به عناصر درون یک ماتریس
شما می توانید با استفاده از براکت [] و وارد کردن سطر و ستون مورد نظر خود در درون این براکت، عناصر داخل یک ماتریس را فراخوانی کنید و تغییرات را روی آن ها انجام دهید. هر یک از این ابعاد (اندیس ها) دارای چند حالت مختلف هستند:
1- استفاده از بردار عدد صحیح به عنوان اندیس:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
x <- matrix(1:9, nrow=3, byrow=FALSE); x [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 x[c(1,2),c(2,3)] # انتخاب سطرهای یک و دو و ستون های دو و سه [,1] [,2] [1,] 4 7 [2,] 5 8 x[c(3,2),] # انتخاب سطرهای دو و سه و همه ستون ها [,1] [,2] [,3] [1,] 3 6 9 [2,] 2 5 8 x[,] # انتخاب تمام سطرها و ستون ها [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 x[-1,] # انتخاب همه سطرها به غیر از سطر اول [,1] [,2] [,3] [1,] 2 5 8 [2,] 3 6 9 # خواهیم دید که کلاس این متغیر عدد صحیح است x[1,] [1] 1 4 7 class(x[1,]) [1] "integer" |
برای این که سطر انتخابی شما به جای یک بردار تبدیل به یک ماتریس شود از دستور drop استفاده کنید:
1 2 3 4 5 |
x[1,,drop=FALSE] # حال نتیجه حاصل یک ماتریس یک در سه خواهد بود نه یک بردار ساده [,1] [,2] [,3] [1,] 1 4 7 class(x[1,,drop=FALSE]) [1] "matrix" |
2- استفاده از بردارهای منطقی به عنوان اندیس:
در این حالت آن دسته از سطرها و ستون هایی نمایش داده می شوند که از نظر منطقی TRUE باشند. به مثال زیر توجه کنید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
x <- matrix(c(4,8,3,6,0,7,1,2,9), nrow=3, byrow=TRUE); x [,1] [,2] [,3] [1,] 4 8 3 [2,] 6 0 7 [3,] 1 2 9 x[c(TRUE,FALSE,TRUE),c(TRUE,TRUE,FALSE)] [,1] [,2] [1,] 4 8 [2,] 1 2 x[c(TRUE,FALSE),c(2,3)] [,1] [,2] [1,] 8 3 [2,] 2 9 # r-studio.ir x[c(TRUE, FALSE)] [1] 4 1 0 3 9 x[x>5] # انتخاب اعداد بزرگتر از 5 در ماتریس [1] 6 8 7 9 x[x%%2 == 0] # انتخاب اعداد زوج در ماتریس [1] 4 6 8 0 2 x[x%%2 == 1] # انتخاب اعداد فرد در ماتریس [1] 1 3 7 9 |
3- استفاده از بردارهای کاراکتری به عنوان اندیس:
استفاده از اندیس های کاراکتری تنها در صورتی برای ماتریس مجاز است که سطر و ستون آن نام گذاری شده باشد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
x A B C [1,] 4 8 3 [2,] 6 0 7 [3,] 1 2 9 x[,"A"] [1] 4 6 1 x[TRUE,c("A","C")] A C [1,] 4 3 [2,] 6 7 [3,] 1 9 x[2:3,c("A","C")] A C [1,] 6 7 [2,] 1 9 |
نحوه ویرایش کردن ماتریس ها در R
ما می توانیم با نسبت دادن عناصر جدید به اعداد درون ماتریس، آن را اصلاح یا ویرایش کنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
x [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 x[2,2] <- 10; x # ویرایش کردن یک عنصر تکی [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 10 8 [3,] 3 6 9 x[x<5] <- 0; x # ویرایش کردن عناصری که کمتر از 5 هستند [,1] [,2] [,3] [1,] 0 0 7 [2,] 0 10 8 [3,] 0 6 9 |
ترانهاده ماتریس:
این کار بسیار در ریاضیات مرسوم است. برای این کار از دستور
dim()
استفاده می شود:
1 2 3 4 5 |
t(x) # ترانسپوز یا ترانهاده ماتریس [,1] [,2] [,3] [1,] 0 0 0 [2,] 0 10 6 [3,] 7 8 9 |
اضافه کردن سطر یا ستون با استفاده از توابع rbind و cbind:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
cbind(x, c(1, 2, 3)) # اضافه کردن ستون [,1] [,2] [,3] [,4] [1,] 0 0 7 1 [2,] 0 10 8 2 [3,] 0 6 9 3 rbind(x,c(1,2,3)) # اضافه کردن سطر [,1] [,2] [,3] [1,] 0 0 7 [2,] 0 10 8 [3,] 0 6 9 [4,] 1 2 3 x <- x[1:2,]; x # حذف کردن سطر آخر [,1] [,2] [,3] [1,] 0 0 7 [2,] 0 10 8 |
ویرایش ابعاد یک ماتریس با دستور
[latex] dim() [/latex]
به شکل زیر است:
1 2 3 4 5 6 7 8 9 10 11 12 |
x [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 dim(x) <- c(3,2); x # تغییر ابعاد به سه در دو [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 dim(x) <- c(1,6); x # تغییر ابعاد به یک در شش [,1] [,2] [,3] [,4] [,5] [,6] [1,] 1 2 3 4 5 6 |
برای مشاهده مثال های بیشتر در ارتباط با آموزش کار با ماتریس ها در R می توانید از سایت Rseek استفاده کنید.
لطفاً دیدگاه خود را برای ما ارسال کنید.
حتماً بخوانید: