آموزش لیست ها در R به زبان ساده
لیست ها اشیائی در R هستند که شامل عناصری از انواع متفاوتی مانند – اعداد، رشته ها، بردارها و لیست دیگر درون آن- می باشند. یک لیست می تواند یک ماتریس یا یک تابع را به عنوان عناصر خود شامل شود. لیست ها با استفاده از تابع ()List ایجاد می شود.
ایجاد یک لیست
در ادامه مثالی آورده شده است که نشان می دهد چگونه می توان یک لیست ایجاد کرد که شامل رشته ها، اعداد و مقادیر منطقی باشد.
# 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”
$<NA>
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)
زمانی که کد بالا را اجرا کنیم؛ نتیجه زیر به دست می آید:
[[۱]]
[۱] ۱ ۲ ۳ ۴ ۵
[[۱]]
[۱] ۱۰ ۱۱ ۱۲ ۱۳ ۱۴
[۱] ۱ ۲ ۳ ۴ ۵
[۱] ۱۰ ۱۱ ۱۲ ۱۳ ۱۴
[۱] ۱۱ ۱۳ ۱۵ ۱۷ ۱۹