كيفية تحويل قائمة إلى متجه في لغة r (مع أمثلة)


يمكنك استخدام أي من الطرق التالية لتحويل قائمة إلى متجه في R:

 #use unlist() function
new_vector <- unlist(my_list, use. names = FALSE )

#use flatten_*() function from purrr library
new_vector <- purrr::flatten(my_list)

توضح الأمثلة التالية كيفية استخدام كل من هذه الطرق عمليًا مع القائمة التالية:

 #create list
my_list <- list(A = c(1, 2, 3),
                B = c(4, 5),
                C = 6)

#display list
my_list

$A
[1] 1 2 3

$B
[1] 4 5

$C
[1] 6

المثال 1: تحويل قائمة إلى متجه باستخدام الدالة unlist()

يوضح الكود التالي كيفية تحويل القائمة إلى متجه باستخدام الدالة unlist() :

 #convert list to vector
new_vector <- unlist(my_list)

#display vector
new_vector

A1 A2 A3 B1 B2 C 
 1 2 3 4 5 6 

لاحظ أنه يمكنك تحديد use.names = FALSE لإزالة الأسماء من المتجه:

 #convert list to vector
new_vector <- unlist(my_list, use. names = FALSE )

#display vector
new_vector

[1] 1 2 3 4 5 6

المثال 2: تحويل قائمة إلى متجه باستخدام الدالة flatten_*

يوضح التعليمة البرمجية التالية كيفية تحويل قائمة إلى متجه باستخدام مجموعة الدوال flatten_* من الحزمة purrr :

 library (purrr)

#convert list to vector
new_vector <- flatten_dbl(my_list)

#display vector
new_vector

[1] 1 2 3 4 5 6

تقوم الدالة flatten_dbl() ‎ بتحويل القائمة على وجه التحديد إلى متجه من النوع double.

لاحظ أنه يمكننا استخدام flatten_chr() لتحويل قائمة الأحرف إلى متجه الأحرف:

 library (purrr) 

#define character list
my_char_list <- list(A = c('a', 'b', 'c'),
                     B = c('d', 'e'),
                     C = 'f')

#convert character list to character vector
new_char_vector <- flatten_chr(my_char_list)

#display vector
new_char_vector

[1] "a" "b" "c" "d" "e" "f"

راجع هذه الصفحة للحصول على قائمة كاملة بمجموعة وظائف flatten_*.

ملاحظة: إذا كنت تعمل مع قائمة طويلة جدًا، فستعمل الدالات flatten_* بشكل أسرع من الدالة unlist() الأساسية في R.

مصادر إضافية

كيفية تحويل قائمة إلى إطار بيانات في R
كيفية تحويل المصفوفة إلى متجه في R
كيفية تحويل عمود إطار البيانات إلى ناقل في R

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *