آرایه ها در زبان برنامه نویسی R به زبان ساده

آرایه نوعی شیء داده در زبان برنامه نویسی R است که می تواند داده را در بیش از دو بعد ذخیره کند. برای مثال- اگر یک آرایه از ابعاد (۲,۳,۴) را ایجاد کنیم؛ سپس این آرایه می تواند ۴ ماتریس مستطیلی ایجاد می کند که هر یک از آنها ۲ ردیف و ۳ ستون دارد. آرایه ها فقط نوع داده ها را می توانند ذخیره کنند.
به زبان ساده و سریع
آرایهها (Arrays) در زبان R یکی از ساختارهای قدرتمند برای نگهداری دادهها هستند. برای درک بهتر آنها، بیایید از ساختارهای سادهتر شروع کنیم و به آرایه برسیم.
تصویرسازی ذهنی ابعاد در R
برای اینکه بدانید آرایه دقیقاً چیست، این سه مرحله را در ذهن خود تجسم کنید:
-
بردار (Vector): یک خط یا یک صف یکطرفه از اعداد را تصور کنید. (یک بُعدی)
-
ماتریس (Matrix): حالا آن خط را گسترش دهید تا تبدیل به یک جدول با سطرها و ستونهای مختلف شود (مثل یک صفحه ساده در نرمافزار اکسل). این ساختار دو بُعدی است.
-
آرایه (Array): حالا چندین صفحه از این جدولها را روی هم قرار دهید! آرایه شبیه به یک مکعب یا یک دفترچه است که چندین صفحه جدولکشی شده دارد. آرایهها میتوانند سهبعدی، چهاربعدی یا حتی بیشتر باشند.
مهمترین قانون آرایهها: یکدستی دادهها
مهمترین ویژگی یک آرایه در زبان R این است که تمام اطلاعات درون آن باید دقیقاً از یک جنس باشند. (به این حالت Homogeneous میگویند).
یعنی شما نمیتوانید در یک آرایه، هم عدد ذخیره کنید و هم متن. اگر یک آرایه عددی داشته باشید و حتی یک کلمه متنی وارد آن کنید، زبان R برای حفظ یکپارچگی، تمام اعداد شما را هم به اجبار به شکل متن درمیآورد.
تفاوت آرایه با سایر ساختارها
برای درک بهتر جایگاه آرایهها، به این جدول مقایسهای نگاه کنید:
| نام ساختار در R | تعداد ابعاد | نوع دادههای مجاز داخل آن |
| بردار (Vector) | فقط ۱ بعد | فقط یک نوع (مثلاً فقط عدد) |
| ماتریس (Matrix) | فقط ۲ بعد | فقط یک نوع (مثلاً فقط عدد) |
| آرایه (Array) | چندین بعد (۳، ۴ و ...) | فقط یک نوع (مثلاً فقط عدد) |
| دیتافریم (Data Frame) | ۲ بعد | ترکیب انواع مختلف (عدد، متن، تاریخ و...) |
آرایهها کجا کاربرد دارند؟
آرایهها زمانی به کار میآیند که شما میخواهید دادههای پیچیدهتری را که به متغیرهای مختلفی وابستهاند، تحلیل کنید.
فرض کنید میخواهید میزان تراکنشهای مالی را بررسی کنید. اگر بخواهید این اطلاعات را بر اساس سه فاکتورِ «روزهای هفته»، «شعبههای مختلف» و «ماههای سال» ذخیره و تحلیل کنید، به یک فضای سهبعدی نیاز دارید. یک آرایه سهبعدی بهترین ابزار برای ذخیره منظم چنین اطلاعاتی در زبان R است.
توضیحات بیشتر و مثالهای جزئی تر
یک آرایه با استفاده از تابع ()Array ایجاد شده است. این آرایه بردارها را به عنوان ورودی اتخاذ می کند و برای ایجاد آرایه؛ از مقادیری استفاده می کند که پارامتر dim هستند.
مثال
مثال زیر یک آرایه از ماتریس های ۳ را ایجاد می کند که هر یک ۳ ردیف و ۳ ستون دارد.
# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# Take these vectors as input to the array.
result <- array(c(vector1,vector2),dim = c(3,3,2))
print(result)
زمانی که کدبالا را اجرا می کنیم؛ نتایج زیر ایجاد می شود:
, , ۱
[,۱] [,۲] [,۳]
[۱,] ۵ ۱۰ ۱۳
[۲,] ۹ ۱۱ ۱۴
[۳,] ۳ ۱۲ ۱۵
, , ۲
[,۱] [,۲] [,۳]
[۱,] ۵ ۱۰ ۱۳
[۲,] ۹ ۱۱ ۱۴
[۳,] ۳ ۱۲ ۱۵
نام گذاری ردیف ها و ستون ها
ما می توانیم به ردیف ها، ستون ها و ماتریس های درون یک آرایه؛ با استفاده از پارامتر dimnames نام مورد نظرمان را اختصاص دهیم.
# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c(“COL1″,”COL2″,”COL3”)
row.names <- c(“ROW1″,”ROW2″,”ROW3”)
matrix.names <- c(“Matrix1″,”Matrix2”)
# Take these vectors as input to the array.
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,column.names,
matrix.names))
print(result)
زمانی که کد بالا را اجرا می کنیم؛ نتایج زیر ایجاد می شود:
, , Matrix1
COL1 COL2 COL3
ROW1 5 10 13
ROW2 9 11 14
ROW3 3 12 15
, , Matrix2
COL1 COL2 COL3
ROW1 5 10 13
ROW2 9 11 14
ROW3 3 12 15
دستیابی به اعضای آرایه ها
# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c(“COL1″,”COL2″,”COL3”)
row.names <- c(“ROW1″,”ROW2″,”ROW3”)
matrix.names <- c(“Matrix1″,”Matrix2”)
# Take these vectors as input to the array.
result <- array(c(vector1,vector2),dim = c(3,3,2),dimnames = list(row.names,
column.names, matrix.names))
# Print the third row of the second matrix of the array.
print(result[3,,2])
# Print the element in the 1st row and 3rd column of the 1st matrix.
print(result[1,3,1])
# Print the 2nd Matrix.
print(result[,,2])
زمانی که کد بالا را اجرا کنیم؛ نتیجه زیر به دست می آید:
COL1 COL2 COL3
۳ ۱۲ ۱۵
[۱] ۱۳
COL1 COL2 COL3
ROW1 5 10 13
ROW2 9 11 14
ROW3 3 12 15
به کار گرفتن اعضای آرایه
همان طور که آرایه از ماتریس ها با ابعاد مختلفی ساخته می شوند؛ عملیات روی عناصر با دستیابی به اعضای ماتریس انجام می شود.
# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# Take these vectors as input to the array.
array1 <- array(c(vector1,vector2),dim = c(3,3,2))
# Create two vectors of different lengths.
vector3 <- c(9,1,0)
vector4 <- c(6,0,11,3,14,1,2,6,9)
array2 <- array(c(vector1,vector2),dim = c(3,3,2))
# create matrices from these arrays.
matrix1 <- array1[,,2]
matrix2 <- array2[,,2]
# Add the matrices.
result <- matrix1+matrix2
print(result)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر را به دست می آوریم:
[,۱] [,۲] [,۳]
[۱,] ۱۰ ۲۰ ۲۶
[۲,] ۱۸ ۲۲ ۲۸
[۳,] ۶ ۲۴ ۳۰
محاسبات روی اعضای آرایه
با استفاده از تابع ()apply ما می توانیم محاسباتی را روی اعضای یک آرایه انجام دهیم.
سینتکس
apply(x, margin, fun)
پارامترهایی که در کد بالا می نویسیم به شرح زیر هستند:
- x یک آرایه می باشد.
- margin نام مجموعه داده های استفاده شده می باشد.
- fun تابعی است که باید به اعضای یک آرایه اعمال شود.
مثال
در کد نویسی زیر ما از تابع ()apply استفاده می کنیم تا جمع عناصر موجود در ردیف های تمامی ماتریس های موجود در یک آرایه را محاسبه کنیم.
# Create two vectors of different lengths.
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
# Take these vectors as input to the array.
new.array <- array(c(vector1,vector2),dim = c(3,3,2))
print(new.array)
# Use apply to calculate the sum of the rows across all the matrices.
result <- apply(new.array, c(1), sum)
print(result)
زمانی که کد بالا را اجرا کنیم؛ به نتایج زیر دست می یابیم:
, , ۱
[,۱] [,۲] [,۳]
[۱,] ۵ ۱۰ ۱۳
[۲,] ۹ ۱۱ ۱۴
[۳,] ۳ ۱۲ ۱۵
, , ۲
[,۱] [,۲] [,۳]
[۱,] ۵ ۱۰ ۱۳
[۲,] ۹ ۱۱ ۱۴
[۳,] ۳ ۱۲ ۱۵
[۱] ۵۶ ۶۸ ۶۰
