当前位置: 首页 > 工具软件 > listr2 > 使用案例 >

R:创建列表(list)

李良策
2023-12-01


 

    向量的元素要求都是同类型的,而列表(list)与向量不同,可以组合多个不同类型的对象。列表在R中扮演着一个至关重要的角色,是数据框和面向对象编程的基础。

    列表是R的数据类型中最为复杂的一种。一般来说,列表就是一些对象(或成分,component)的有序集合。列表能整合若干(可能无关的)对象到单个对象名下。例如,某个列表中可能是若干向量、矩阵、数据框,甚至是其他列表的组合。

    从技术上讲,列表就是向量。之前我们接触过的普通向量都称为“原子型(atomic)”向量,就是说,向量的元素已经是 最小的、不可再分的。而列表则属于“递归型(recursive)”向量。

    可以使用函数list()创建列表:

mylist <- list( name1=object1, name2=object2, … )

    其中的对象可以是R语言中的任何数据结构。

 

list( name="Joe", salary=55000, union=T )

$name

[1] "Joe" 


$salary

[1] 55000 


$union

[1] TRUE


    R语言中列表各组件的名称叫做标签(tags),例如上面代码中的salary。实际上标签是可选的,也可以不指定。上面代码也可以这样写:

> list( "Joe", 55000, T )

[[1]]

[1] "Joe" 

[[2]]

[1] 55000 

[[3]]

[1] TRUE

    但是一般来说推荐为各个部分取名而不用这些默认的数值,这样使代码更清晰而且不容易犯错误。

 

    在使用的时候,标签的名字可以简写,只写出前几个字母,只要不引起歧义,R都能识别:

> l <- list( name="Joe", salary=55000, union=T )

> l$salary

[1] 55000

> l$sal

[1] 55000

 

    因为列表是向量,因此可以使用vector来创建列表。

> z <- vector( mode = "list" )

> z[["abc"]] <- 3   #两个中括号间不允许有空格

> z

$abc[1] 3

 

    测试列表的长度:

> l <- list( name="Joe", salary=55000, union=T )

> length( l )

[1] 3

 

►列表连接

    当连接函数c()的参数中有列表对象时,结果就是一个列表模式的对象,它的分量是那些当作参数的列表。

> list.ABC <- c( list.A, list.B, list.C )

 

    由于两个原因,列表成了R中的重要的数据结构。首先,列表允许以一种简单的方式组织和重新调用不相干的信息;其次,许多R函数的运行结果都是以列表的形式返回的。

注意:

Ю 对象名称中的句点(.)没有特殊意义。但美元符号($)却有着和其他语言中的句点类似的含义,即指定一个对象中的某部分。

Ю R不提供多行注释或块注释功能。必须以#作为多行注释每行的开始。出于调试的目的,可以把想让编译器忽略的代码放到语句if(FALSE){…}中。

Ю 将一个值赋给某个向量、矩阵、数组或列表中一个不存在的元素时,R将自动扩展这个数据结构以容纳新值。

Ю R中没有标量。标量以单元素向量的形式出现。

Ю R中的下标不从0开始,而从1开始。

Ю 变量无法被声明,它们在首次被赋值时生成。

 




 类似资料: