آموزش لیست ها در R به زبان ساده (با مثال و همه نکات)

لیست ها اشیائی در R هستند که شامل عناصری از انواع متفاوتی مانند – اعداد، رشته ها، بردارها و لیست دیگر درون آن- می باشند. یک لیست می تواند یک ماتریس یا یک تابع را به عنوان عناصر خود شامل شود. لیست ها با استفاده از تابع ()List ایجاد می شود.
به زبان ساده باید گفت لیستها (Lists) در زبان R، منعطفترین و همهکارهترین ظروف برای نگهداری اطلاعات هستند.
مفهوم اصلی و تفاوت با سایر ساختارها همانطور که پیشتر اشاره شد، ساختارهایی مثل بردارها یا آرایهها شما را مجبور میکنند که فقط یک نوع داده (مثلاً فقط عدد یا فقط متن) را ذخیره کنید. اما لیستها هیچ محدودیتی ندارند. شما میتوانید هر دادهای را با هر شکل، جنس و اندازهای درون یک لیست قرار دهید. در واقع، لیستها میتوانند حتی لیستهای دیگر یا ساختارهای پیچیدهتر را نیز درون خود جای دهند.
یک مثال کاربردی در سیستمهای مالی برای درک بهتر، ساختار یک پروفایل دیجیتال مشتری را در یک سیستم نرمافزاری بانکی یکپارچه (Core Banking) تصور کنید. اگر بخواهید تمام اطلاعات نامتجانس این مشتری را در یک بسته واحد و منظم در حافظه سیستم نگه دارید، یک لیست بهترین ابزار است. در این پرونده واحد، شما میتوانید:
-
نام و نام خانوادگی مشتری (متن)
-
وضعیت مسدودی یا فعال بودن حساب (مقدار منطقی True/False)
-
مبالغ دهها تراکنش اخیر (یک بردار یا صف طولانی از اعداد)
-
و حتی یک جدول کامل از وضعیت اقساط وامها (یک ساختار دو بعدی)
همه این موارد با وجود اینکه هیچ شباهتی از نظر ساختار و نوع به هم ندارند، به راحتی درون یک لیست واحد دستهبندی و بایگانی میشوند.
چرا لیستها تا این حد در R استفاده میشوند؟ در پروژههای واقعی و تحلیل دادههای پیشرفته، خروجی بسیاری از الگوریتمها و توابع آماری، فقط یک عدد یا یک جدول ساده نیست؛ بلکه مجموعهای از اطلاعات مختلف (مثل میزان خطا، نمودارها، و جداول پیشبینی) است. زبان R از لیستها به عنوان یک پوشه جامع استفاده میکند تا تمام این نتایج متنوع را به صورت یکپارچه و در قالب یک خروجی واحد به شما تحویل دهد.
ایجاد یک لیست
در ادامه مثالی آورده شده است که نشان می دهد چگونه می توان یک لیست ایجاد کرد که شامل رشته ها، اعداد و مقادیر منطقی باشد.
# Create a list containing strings, numbers, vectors and a logical
# values.
list_data <- list(“Red”, “Green”, c(21,32,11), TRUE, 51.23, 119.1)
print(list_data)
زمانی که کد بالا را اجرا کنیم؛ نتایج زیر ایجاد می شود:
[[۱]]
[۱] “Red”
[[۲]]
[۱] “Green”
[[۳]]
[۱] ۲۱ ۳۲ ۱۱
[[۴]]
[۱] TRUE
[[۵]]
[۱] ۵۱٫۲۳
[[۶]]
[۱] ۱۱۹٫۱
نام گذاری اعضای لیست
اعضای لیست را می توان نام گذاری کرد و با استفاده از نامشان می توان به آنها دست یافت.
# Create a list containing a vector, a matrix and a list.
list_data <- list(c(“Jan”,”Feb”,”Mar”), matrix(c(3,9,5,1,-2,8), nrow = 2),
list(“green”,12.3))
# Give names to the elements in the list.
names(list_data) <- c(“1st Quarter”, “A_Matrix”, “A Inner list”)
# Show the list.
print(list_data)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر ایجاد می شود:
$`۱st_Quarter`
[۱] “Jan” “Feb” “Mar”
$A_Matrix
[,۱] [,۲] [,۳]
[۱,] ۳ ۵ -۲
[۲,] ۹ ۱ ۸
$A_Inner_list
$A_Inner_list[[1]]
[۱] “green”
$A_Inner_list[[2]]
[۱] ۱۲٫۳
دسترسی به عناصر یک لیست
با استفاده از شاخص اعضای یک لیست می توان به آنها دست یافت. در مورد لیست های نام گذاری شده؛ می توان با استفاده از نام اعضا نیر به آنها دست پیدا کرد.
ما به استفاده از لیستی که در مثال بالا است؛ ادامه می دهیم:
# Create a list containing a vector, a matrix and a list.
list_data <- list(c(“Jan”,”Feb”,”Mar”), matrix(c(3,9,5,1,-2,8), nrow = 2),
list(“green”,12.3))
# Give names to the elements in the list.
names(list_data) <- c(“1st Quarter”, “A_Matrix”, “A Inner list”)
# Access the first element of the list.
print(list_data[1])
# Access the thrid element. As it is also a list, all its elements will be printed.
print(list_data[3])
# Access the list element using the name of the element.
print(list_data$A_Matrix)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر به دست می آید:
$`۱st_Quarter`
[۱] “Jan” “Feb” “Mar”
$A_Inner_list
$A_Inner_list[[1]]
[۱] “green”
$A_Inner_list[[2]]
[۱] ۱۲٫۳
[,۱] [,۲] [,۳]
[۱,] ۳ ۵ -۲
[۲,] ۹ ۱ ۸
به کار گرفتن اعضای یک لیست
ما می توانیم عناصر لیست را همان طور که در زیر نشان داده شده است؛ اضافه یا حذف کنیم. ما می توانیم عناصر را فقط به انتهای لیست اضافه کنیم؛ همچنین فقط عناصر انتهای یک لیست را می توانیم حذف نماییم. اما ما می توانیم هر عنصری را آپدیت کنیم.
# Create a list containing a vector, a matrix and a list.
list_data <- list(c(“Jan”,”Feb”,”Mar”), matrix(c(3,9,5,1,-2,8), nrow = 2),
list(“green”,12.3))
# Give names to the elements in the list.
names(list_data) <- c(“1st Quarter”, “A_Matrix”, “A Inner list”)
# Add element at the end of the list.
list_data[4] <- “New element”
print(list_data[4])
# Remove the last element.
list_data[4] <- NULL
# Print the 4th Element.
print(list_data[4])
# Update the 3rd Element.
list_data[3] <- “updated element”
print(list_data[3])
زمانی که ما کد بالا را اجرا می کنیم؛ نتیجه زیر به دست می آید:
[[۱]]
[۱] “New element”
$
NULL
$`A Inner list`
[۱] “updated element”
ادغام کردن لیست ها
شما می توانید لیست های بسیاری را در یک لیست ادغام کنید. این کار با قرار دادن تمام لیست ها در یک تابع list() انجام می شود.
# Create two lists.
list1 <- list(1,2,3)
list2 <- list(“Sun”,”Mon”,”Tue”)
# Merge the two lists.
merged.list <- c(list1,list2)
# Print the merged list.
print(merged.list)
زمانی که کد بالا را اجرا می کنیم؛ نتیجه زیر حاصل می شود:
[[۱]]
[۱] ۱
[[۲]]
[۱] ۲
[[۳]]
[۱] ۳
[[۴]]
[۱] “Sun”
[[۵]]
[۱] “Mon”
[[۶]]
[۱] “Tue”
تبدیل کردن لیست به وکتور
یک لیست می تواند به یک وکتور تبدیل شود؛ به صورتی که عناصر آن وکتور را می توان برای به کار گرفتن در آینده استفاده کرد. تمام عملیات های حسابی روی بردارها را می توان بعد از آن که لیست به بردارها تبدیل شد؛ اعمال کرد. برای انجام این تبدیل، ما از تابع ()unlist استفاده می کنیم. این تابع، لیستی را به عنوان ورودی اتخاذ می کند و یک بردار را تولید می کند.
# Create lists.
list1 <- list(1:5)
print(list1)
list2 <-list(10:14)
print(list2)
# Convert the lists to vectors.
v1 <- unlist(list1)
v2 <- unlist(list2)
print(v1)
print(v2)
# Now add the vectors
result <- v1+v2
print(result)
زمانی که کد بالا را اجرا کنیم؛ نتیجه زیر به دست می آید:
[[۱]]
[۱] ۱ ۲ ۳ ۴ ۵
[[۱]]
[۱] ۱۰ ۱۱ ۱۲ ۱۳ ۱۴
[۱] ۱ ۲ ۳ ۴ ۵
[۱] ۱۰ ۱۱ ۱۲ ۱۳ ۱۴
[۱] ۱۱ ۱۳ ۱۵ ۱۷ ۱۹
