從零開始學習R語言(五)——數據結構之“列表(List)”


本文首發於知乎專欄:https://zhuanlan.zhihu.com/p/60141740

也同步更新於我的個人博客:https://www.cnblogs.com/nickwu/p/12567803.html


5. 列表(list)

R語言中的列表和Python等語言中的list有所不同。R語言中的列表是對象的集合, 列表中的對象又稱為它的分量(components)。 分量可以包含向量、矩陣、數組,數據框,甚至是另外一個列表,且在列表中要求每一個分量都要有一個名稱。

my_list <- list(stud_id=c(34453,123),
                 stud_name="John",
                 stud_marks=c(14.3,12,15,19))
my_list
#輸出:
 $stud_id
 [1] 34453   123
 $stud_name
 [1] "John"
 $stud_marks
 [1] 14.3 12.0 15.0 19.0

5.1 列表的索引

使用列表的索引形式可以對列表中的元素進行訪問,編輯或刪除。

訪問列表中的元素可以使用雙重方括號來指明成分或使用成分的名稱及位置來訪問。

5.1.1 訪問列表中某一個成分

list1[1] #訪問列表中的第一個成分,使用這種方法,返回的結果仍為一個列表( 還可以使用list1['stu_id']的方式訪問第一個成分)

# mode(my_list[1])
# 返回 "list"

5.1.2 訪問列表中某一個成分的全部元素值

list1[[1]] #訪問列表中的第一個成分的全部元素值,這次返回的是向量,不再是列表。( 還可以通過list1$stu_id訪問名稱為“stu_id”成分的全部元素。 )

# mode(list[[1]])
# 返回"numeric"  

5.1.3 訪問列表中某一個成分的某一個元素值

list[1] #訪問列表第1個成分的第1個元素值

5.2 列表的編輯

5.2.1 添加或刪除列表中的某一成分

原理與對列表中某一成分的索引相同

my_list$new_comp <- c(1,2,3,4) #若new_comp成分不存在,則直接添加該成分並賦值
my_list['new_comp'] <-list(c(1,2,3)) #若new_comp成分不存在,則直接添加該成分並賦值 
my_list$stu_id = NULL        #刪除名稱為stu_id的成分
my_list['stu_name'] = NULL   #刪除名稱為stu_name的成分 

5.2.2 修改列表某一成分的元素值

方法同5.2.1,若該成分已存在,則修改該成分的元素值,如不存在,則創建新的成分

5.2.3 修改列表某一成分的某一元素值

原理與某一具體元素值的索引相同

my_list[[1]][2] <- c(1,2,3)  #修改列表中第一個成分的第2個元素值

5.3 列表的常用操作

  1. names( )函數可以顯示並修改list中所有成分的名字

  2. length( )函數可以顯示list中成分的個數

  3. unlist( )函數可以將list解包

#Example:
names(list1) <- c('a','b','c')
​
unlist(my.lst)
#輸出:
stud_id1    stud_id2   stud_name stud_marks1 stud_marks2 stud_marks3 
     "34453"       "123"      "John"      "14.3"        "12"        "15" 
 stud_marks4 
        "19" 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM