列表元素可以给定它们的名字并且可以使用这些名称来访问。
列表的元素可以通过在列表中的元素的索引来访问。如遇命名列表也可以使用名称来访问。
继续使用在上面例子的列表
我们可以添加,删除和更新列表中的元素,如下图所示。我们可以增加或删除而且只能添加到列表的末尾的元素。但是可以更新任何元素。
可以把所有的列表传到一个 list()函数合并多个列表成一个列表。
列表可以被转换为一个向量,以便能用于进一步操纵向量的元素。所有关于向量的算术运算可以在列表被转换为矢量之后被应用。要做到这一点转换,使用unlist() 函数。它以列表作为输入,并产生一个向量。
is.vector(A):判断A是否为向量;
as.vector(A):如A是矩阵(数组),as.vector就是将矩阵转化为向量。
R中的vector分为两类,atomic和list,二者的区别在于,前者元素类型必须相同,后者可以不同。前者的代表是向量和矩阵,后者的代表是list和数据框。
is.vector
由于它们都是vector,所以用is.vector检验无法区分向量和列表。当然,也无法用as.vector将列表转换成向量。
同样是vector,矩阵和数据框用is.vector检验就返回的是FALSE,这说明is.vector也不是检验vector的,它的真正原理在于,检查是否最多只有一个属性:name。即查看其属性,如果没有属性或者只有一个name属性,才返回TRUE。
扩展资料
R语言强大的功能:
1、R的标记语言可以制作可重复生成的Word和Powerpoint文档
R语言中的rmarkdown包可以制作可重复生成的Word文档和Powerpoint幻灯片,而这只需要改变一行YAML的代码。
2、组建和运行一个可交互的网络应用只需要几行代码
几行R代码就可以生成一个可交互的网络应用。比方说如果使用R语言的flexdashboard包, 只需要36行代码,就可以生成一个可交互的动态报表,来探索BMI指数与全国健康营养检查样本结果的关联。
3、几行甚至一行R代码就可以支持网络应用的运行
另外一个很酷的功能是,通过rsconnect包,R语言还可以仅用一两行代码就支持网络应用的运行。这些应用既可以通过自己的服务器来支持,也可以用shinyapps.io这种云服务器。
4、通过使用R语言的dplyr/dbplyr,几乎各种数据库都可以连接
使用dbplyr包,用R语言连接各种数据库,无论是本地的还是远程的,都非常方便。这个功能使R语言用户可以不用担心底层的数据库,而独立地从主流数据库中抽取数据。R语言的bigrquery包还可以直接利用BigQuery和其他大规模数据存储。
我们在日常的数据分析过程中,经常要进行循环的操作。但是在R语言中,for循环的效率低下,如果是数据量比较大的情况下,可能会花费比较多的时间。因此,我们可以使用向量化操作来代替循环。向量化可以理解为高效的循环。
我们主要讲解基础包中的:
此函数经常被用于对矩阵的行或列进行指定目的的循环
• 可以被用于多个数组的循环
• 该函数作用于一行进行循环
• X 是一个数组
• MARGIN 参数是一个数字向量,在适用与矩阵时,1表示行,2表示列,也可以是列名
• FUN 是适用循环的函数
• ... 表示其他参数
使用之前我们学过的东西进行改进的话可以酱紫:
但是依然还是有缺陷,就是只能对一个分组变量,不能同时对多个变量进行
接下来我们讲下怎么弥补这个缺陷:
split 用于使某向量或对象分为指定数目的列表,指
定数目的组由因子列表确定
• X是一个向量或数据框
• F是一个因子或因子列表
• Drop表示空因子水平是否舍弃