على عكس المتجهات ، يمكن أن تحتوي القوائم على مكونات من أنواع مختلفة ، تمامًا كما يمكن أن تحتوي قوائم المهام الخاصة بك على فئات مختلفة من المهام. سيعلمك هذا الفصل كيفية إنشاء هذه القوائم وتسميتها وتجميعها.
القوائم ، لماذا تحتاجها؟
تهانينا! أنت معتاد بالفعل في هذه المرحلة من الدورة على:
تشبه القائمة الموجودة في R قائمة مهامك في العمل أو المدرسة: من المرجح أن تختلف العناصر المختلفة في تلك القائمة من حيث الطول والسمات ونوع النشاط الذي يجب القيام به.
تسمح لك القائمة في R بجمع مجموعة متنوعة من الكائنات تحت اسم واحد (أي اسم القائمة) بطريقة مرتبة. يمكن أن تكون هذه الكائنات عبارة عن مصفوفات ومتجهات وإطارات بيانات وحتى قوائم أخرى وما إلى ذلك. ولا يلزم حتى أن تكون هذه الكائنات مرتبطة ببعضها البعض بأي شكل من الأشكال.
يمكنك القول أن القائمة هي نوع من أنواع البيانات الفائقة: يمكنك تخزين أي جزء من المعلومات عمليًا فيها!
إنشاء قائمة
دعونا ننشئ قائمتنا الأولى! لإنشاء قائمة ، استخدم الدالة list ():
my_list <- list(comp1، comp2 ...)
arguments دالة list
هي مكونات القائمة. تذكر أن هذه المكونات يمكن أن تكون مصفوفات ومتجهات وقوائم أخرى
# Vector with numerics from 1 up to 10
my_vector <- 1:10
# Matrix with numerics from 1 up to 9
my_matrix <- matrix(1:9, ncol = 3)
# First 10 elements of the built-in data frame mtcars
my_df <- mtcars[1:10,]
# Construct list with these different elements:
my_list <-list(my_vector,my_matrix,my_df)
تسمية قائمة
تمامًا كما هو الحال في قائمة المهام الخاصة بك ، فأنت تريد تجنب عدم معرفة أو تذكر ما تمثله مكونات قائمتك. لهذا السبب يجب أن تطلق عليهم أسماء:
my_list <- list (name1 = your_comp1،
name2 = your_comp2)
دعنا نقوم بإنشاء قائمة بالمكونات المسماة name1 و name2 وما إلى ذلك. إذا كنت تريد تسمية القوائم الخاصة بك بعد إنشائها ، فيمكنك استخدام دالة sname () كما فعلت مع المتجهات. الأوامر التالية مكافئة تمامًا للمهمة أعلاه:
my_list <- list(your_comp1، your_comp2)
names(my_list) <- c ("name1"، "name2")
# Vector with numerics from 1 up to 10
my_vector <- 1:10
# Matrix with numerics from 1 up to 9
my_matrix <- matrix(1:9, ncol = 3)
# First 10 elements of the built-in data frame mtcars
my_df <- mtcars[1:10,]
# Adapt list() call to give the components names
my_list <- list(my_vector, my_matrix, my_df)
# Print out my_list
names(my_list) <- c("vec", "mat", "df")
my_list
إنشاء قائمة مسماة (2)
نظرًا لكونك معجبًا كبيرًا بالأفلام (تذكر وظيفتك في LucasFilms) ، فإنك تقرر البدء في تخزين المعلومات حول الأفلام الجيدة بمساعدة القوائم.
ابدأ بإنشاء قائمة لفيلم "The Shining". لقد قمنا بالفعل بإنشاء المتغيرات mov ، و act ، و rev في مساحة العمل R الخاصة بك. لا تتردد في التحقق منها في وحدة التحكم.
# The variables mov, act and rev are available
# Finish the code to build shining_list
shining_list <- list(moviename = mov,actors=act,reviews=rev)
اختيار العناصر من القائمة
غالبًا ما يتم إنشاء قائمتك من العديد من العناصر والمكونات. لذلك ، فإن الحصول على عنصر واحد أو عدة عناصر أو مكون منه ليس دائمًا أمرًا سهلاً.
إحدى الطرق لتحديد مكون هي استخدام الموضع المرقم لهذا المكون. على سبيل المثال ، "للاستيلاء" على المكون الأول من shining_list الذي تكتبه
shining_list [[1]]
من المهم أن تتذكر: لتحديد عناصر من المتجهات ، يمكنك استخدام أقواس مربعة مفردة: []. لا تخلط بينهم!
يمكنك أيضًا الرجوع إلى أسماء المكونات ، باستخدام [[]] أو بعلامة $. سيحدد كلاهما إطار البيانات الذي يمثل المراجعات:
shining_list[["reviews"]]
shining_list$reviews
إلى جانب تحديد المكونات ، غالبًا ما تحتاج إلى تحديد عناصر معينة من هذه المكونات. على سبيل المثال ، مع shining_list [[2]] [1] تختار من المكون الثاني ، actors (shining_list [[2]]) ، العنصر الأول ([1]). عندما تكتب هذا في وحدة التحكم ، سترى أن الإجابة هي جاك نيكلسون.
# shining_list is already pre-loaded in the workspace
# Print out the vector representing the actors
shining_list$actors
# Print the second element of the vector representing the actors
shining_list$actors[2]
shining_list$actors
[1] "Jack Nicholson" "Shelley Duvall" "Danny Lloyd" "Scatman Crothers"
[5] "Barry Nelson"
# Print the second element of the vector representing the actors
shining_list$actors[[2]]
[1] "Shelley Duvall"
إنشاء قائمة جديدة لفيلم آخر
لقد عثرت على تقييمات لفيلم آخر أحدث لـ Jack Nicholson: The Departed!
التقييم التعليقات
4.6 أود مشاهدته مرة أخرى
5 مذهل!
4.8 أحببته
5 من أفضل الأفلام
4.2 مؤامرة رائعة
سيكون من المفيد جمع كل المعلومات حول الفيلم معًا ، مثل العنوان والممثلين والمراجعات في متغير واحد. نظرًا لأن هذه الأجزاء من البيانات هي أشكال مختلفة ، فمن الطبيعي دمجها في متغير قائمة.
movie_title ، التي تحتوي على عنوان الفيلم ، و movie_actors ، التي تحتوي على أسماء بعض الممثلين في الفيلم ، متوفرة في مساحة العمل الخاصة بك.
# Use the table from the exercise to define the comments and scores vectors
scores <- c(4.6, 5, 4.8, 5, 4.2)
comments <- c("I would watch it again", "Amazing!", "I liked it", "One of the best movies", "Fascinating plot")
# Save the average of the scores vector as avg_review
avg_review <- mean(scores)
# Combine scores and comments into the reviews_df data frame
reviews_df <- data.frame(scores, comments)
# Create and print out a list, called departed_list
departed_list <- list(movie_title, movie_actors, reviews_df, avg_review)
departed_list
departed_list
[[1]]
[1] "The Departed"
[[2]]
[1] "Leonardo DiCaprio" "Matt Damon" "Jack Nicholson"
[4] "Mark Wahlberg" "Vera Farmiga" "Martin Sheen"
[[3]]
scores comments
1 4.6 I would watch it again
2 5.0 Amazing!
3 4.8 I liked it
4 5.0 One of the best movies
5 4.2 Fascinating plot
[[4]]
[1] 4.72
العودة إلي Introduction to R (تلخيصات من DATA CAMP)