R列表用法详解

本文概述

  • 列出创建
  • 命名列出元素
  • 访问列表元素
  • 操纵列表元素
  • 将列表转换为矢量
  • 合并清单
在R中, 列表是向量的第二种类型。列表是R的对象, 其中包含不同类型的元素, 例如数字, 向量, 字符串和其中的另一个列表。它也可以包含一个函数或矩阵作为其元素。列表是一种数据结构, 具有混合数据类型的组件。可以说, 列表是包含其他对象的通用向量。
例子
vec < - c(3, 4, 5, 6)char_vec< -c("shubham", "nishka", "gunjan", "sumit")logic_vec< -c(TRUE, FALSE, FALSE, TRUE)out_list< -list(vec, char_vec, logic_vec)out_list

输出
[[1]][1] 3 4 5 6[[2]][1] "shubham" "nishka""gunjan""sumit"[[3]][1]TRUE FALSE FALSETRUE

R列表用法详解

文章图片
列出创建 创建列表的过程与矢量相同。在R中, 借助c()函数创建矢量。与c()函数类似, 还有另一个函数, 即list(), 该函数用于在R中创建列表。列表避免了向量(即数据类型)的缺点。我们可以在不同数据类型的列表中添加元素。
句法
list()

示例1:创建具有相同数据类型的列表
list_1< -list(1, 2, 3)list_2< -list("Shubham", "Arpita", "Vaishali")list_3< -list(c(1, 2, 3))list_4< -list(TRUE, FALSE, TRUE)list_1list_2list_3list_4

输出
[[1]][1] 1[[2]][1] 2[[3]][1] 3[[1]][1] "Shubham"[[2]][1] "Arpita"[[3]][1] "Vaishali"[[1]][1] 1 2 3[[1]][1] TRUE[[2]][1] FALSE[[3]][1] TRUE

示例2:创建具有不同数据类型的列表
list_data< -list("Shubham", "Arpita", c(1, 2, 3, 4, 5), TRUE, FALSE, 22.5, 12L)print(list_data)

在上面的示例中, 列表函数将创建一个包含字符, 逻辑, 数字和矢量元素的列表。它将给出以下输出
输出
[[1]][1] "Shubham"[[2]][1] "Arpita"[[3]][1] 1 2 3 4 5[[4]][1] TRUE[[5]][1] FALSE[[6]][1] 22.5[[7]][1] 12

命名列出元素 【R列表用法详解】R为访问元素提供了一种非常简单的方法, 即为列表的每个元素提供名称。通过为元素分配名称, 我们可以轻松访问元素。仅需三个步骤即可打印与名称相对应的列表数据:
  1. 创建一个列表。
  2. 借助names()函数为列表元素分配名称。
  3. 打印列表数据。
让我们看一个例子, 以了解如何为列表元素赋予名称。
例子
# Creating a list containing a vector, a matrix and a list.list_data < - list(c("Shubham", "Nishka", "Gunjan"), matrix(c(40, 80, 60, 70, 90, 80), nrow = 2), list("BCA", "MCA", "B.tech"))# Giving names to the elements in the list.names(list_data) < - c("Students", "Marks", "Course")# Show the list.print(list_data)

输出
$Students[1] "Shubham" "Nishka""Gunjan"$Marks[, 1] [, 2] [, 3][1, ]406090[2, ]807080$Course$Course[[1]][1] "BCA"$Course[[2]][1] "MCA"$Course[[3]][1] "B. tech."

访问列表元素 R提供了两种访问列表元素的方式。第一个是以与向量相同的方式执行的索引方法。在第二篇文章中, 我们可以在名称的帮助下访问列表的元素。只有命名列表才有可能。如果列表正常, 则无法使用名称访问列表的元素。
R列表用法详解

文章图片
让我们看一下这两种方法的示例, 以了解如何在列表中使用它们来访问元素。
示例1:使用索引访问元素
# Creating a list containing a vector, a matrix and a list.list_data < - list(c("Shubham", "Arpita", "Nishka"), matrix(c(40, 80, 60, 70, 90, 80), nrow = 2), list("BCA", "MCA", "B.tech"))# Accessing the first element of the list.print(list_data[1])# Accessing the third element. The third element is also a list, so all its elements will be printed.print(list_data[3])

输出
[[1]][1] "Shubham" "Arpita""Nishka"[[1]][[1]][[1]][1] "BCA"[[1]][[2]][1] "MCA"[[1]][[3]][1] "B.tech"

示例2:使用名称访问元素
# Creating a list containing a vector, a matrix and a list.list_data < - list(c("Shubham", "Arpita", "Nishka"), matrix(c(40, 80, 60, 70, 90, 80), nrow = 2), list("BCA", "MCA", "B.tech"))# Giving names to the elements in the list.names(list_data) < - c("Student", "Marks", "Course")# Accessing the first element of the list.print(list_data["Student"])print(list_data$Marks)print(list_data)

输出
$Student[1] "Shubham" "Arpita""Nishka"[, 1] [, 2] [, 3][1, ]406090[2, ]807080$Student[1] "Shubham" "Arpita""Nishka"$Marks[, 1] [, 2] [, 3][1, ]406090[2, ]807080$Course$Course[[1]][1] "BCA"$Course[[2]][1] "MCA"$Course[[3]][1] "B. tech."

操纵列表元素 R允许我们添加, 删除或更新列表中的元素。我们可以从任何地方更新列表的元素, 但是元素只能在列表的末尾添加或删除。要从指定的索引中删除元素, 我们将为其分配一个空值。我们可以通过从新值覆盖列表元素来更新它。让我们看一个示例, 以了解如何添加, 删除或更新列表中的元素。
例子
# Creating a list containing a vector, a matrix and a list.list_data < - list(c("Shubham", "Arpita", "Nishka"), matrix(c(40, 80, 60, 70, 90, 80), nrow = 2), list("BCA", "MCA", "B.tech"))# Giving names to the elements in the list.names(list_data) < - c("Student", "Marks", "Course")# Adding element at the end of the list.list_data[4] < - "Moradabad"print(list_data[4])# Removing the last element.list_data[4] < - NULL# Printing the 4th Element.print(list_data[4])# Updating the 3rd Element.list_data[3] < - "Masters of computer applications"print(list_data[3])

输出
[[1]][1] "Moradabad"$< NA> NULL$Course[1] "Masters of computer applications"

将列表转换为矢量 列表有一个缺点, 即我们无法对列表元素执行所有算术运算。为了消除这一点, 缺点R提供了unlist()函数。此函数将列表转换为向量。在某些情况下, 需要将列表转换为向量, 以便我们可以使用向量的元素进行进一步操作。
unlist()函数将列表作为参数并更改为向量。让我们看一个示例, 以了解如何在R中使用unlist()函数。
例子
# Creating lists.list1 < - list(10:20)print(list1)list2 < -list(5:14)print(list2)# Converting the lists to vectors.v1 < - unlist(list1)v2 < - unlist(list2)print(v1)print(v2)adding the vectorsresult < - v1+v2print(result)

输出
[[1]][1] 1 2 3 4 5[[1]][1] 10 11 12 13 14[1] 1 2 3 4 5[1] 10 11 12 13 14[1] 11 13 15 17 19

合并清单 R允许我们将一个或多个列表合并为一个列表。合并也借助list()函数完成。要合并列表, 我们必须将所有列表作为参数传递到list函数中, 然后它返回一个列表, 其中包含列表中存在的所有元素。让我们看一个示例, 以了解合并过程是如何完成的。
例子
# Creating two lists.Even_list < - list(2, 4, 6, 8, 10)Odd_list < - list(1, 3, 5, 7, 9)# Merging the two lists.merged.list < - list(Even_list, Odd_list)# Printing the merged list.print(merged.list)

输出
[[1]][[1]][[1]][1] 2[[1]][[2]][1] 4[[1]][[3]][1] 6[[1]][[4]][1] 8[[1]][[5]][1] 10[[2]][[2]][[1]][1] 1[[2]][[2]][1] 3[[2]][[3]][1] 5[[2]][[4]][1] 7[[2]][[5]][1] 9

    推荐阅读