在R中,List列表是向量的第二种类型。列表是R的对象,其中包含不同类型的元素,例如数字,向量,字符串和其中的另一个列表。它也可以包含一个函数或矩阵作为其元素。列表是一种数据结构,具有混合数据类型的组件。可以说,列表是包含其他对象的通用向量。
vec <- c(3,4,5,6) char_vec<-c("learnfk","toolfk","chromefk","nesfk") 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] "learnfk" "toolfk" "chromefk" "nesfk" [[3]] [1] TRUE FALSE FALSE TRUE
创建列表的过程与矢量相同。在R中,借助c()函数创建向量。与c()函数类似,还有另一个函数,即list(),该函数用于在R中创建列表。列表避免了向量(即数据类型)的缺点。我们可以在不同数据类型的列表中添加元素。
语法
list()
例子 1: 创建具有相同数据类型的列表
list_1<-list(1,2,3) list_2<-list("learnfk","toolfk","chromefk") list_3<-list(c(1,2,3)) list_4<-list(TRUE,FALSE,TRUE) list_1 list_2 list_3 list_4
输出:
[[1]] [1] 1 [[2]] [1] 2 [[3]] [1] 3 [[1]] [1] "learnfk" [[2]] [1] "toolfk" [[3]] [1] "chromefk" [[1]] [1] 1 2 3 [[1]] [1] TRUE [[2]] [1] FALSE [[3]] [1] TRUE
例子 2: 创建具有不同数据类型的列表
list_data<-list("learnfk","toolfk",c(1,2,3,4,5),TRUE,FALSE,22.5,12L) print(list_data)
在上面的示例中,列表函数将创建一个包含字符,逻辑,数字和矢量元素的列表。它将给出以下输出
输出:
[[1]] [1] "learnfk" [[2]] [1] "toolfk" [[3]] [1] 1 2 3 4 5 [[4]] [1] TRUE [[5]] [1] FALSE [[6]] [1] 22.5 [[7]] [1] 12
R为访问元素提供了一种非常简单的方法,即为列表的每个元素提供名称。通过为元素分配名称,我们可以轻松访问元素。仅需三个步骤即可打印与名称相对应的列表数据:
让我们看一个示例,以了解如何将名称赋予列表元素。
例子
# 创建一个包含向量、矩阵和列表的列表。 list_data <- list(c("Learnfk","Toolfk","Chromefk"), matrix(c(40,80,60,70,90,80), nrow = 2), list("BCA","MCA","B.tech")) # 为列表中的元素命名。 names(list_data) <- c("Students", "Marks", "Course") # 显示列表。 print(list_data)
输出:
$Students [1] "Learnfk" "Toolfk" "Chromefk" $Marks [,1] [,2] [,3] [1,] 40 60 90 [2,] 80 70 80 $Course $Course[[1]] [1] "BCA" $Course[[2]] [1] "MCA" $Course[[3]] [1] "B. tech."
R提供了两种访问列表元素的方式。第一个是以与向量相同的方式执行的索引方法。在第二篇文章中,我们可以借助名称来访问列表的元素。只有命名列表才有可能。如果列表正常,则无法使用名称访问列表的元素。
让我们看一下这两种方法的示例,以了解如何在列表中使用它们来访问元素。
例子 1: 使用索引访问元素
# 创建一个包含向量、矩阵和列表的列表。 list_data <- list(c("Learnfk","Toolfk","Chromefk"), matrix(c(40,80,60,70,90,80), nrow = 2), list("BCA","MCA","B.tech")) # 访问列表的第一个元素。 print(list_data[1]) # 访问第三个元素。第三个元素也是一个列表,所以它的所有元素都会被打印出来。 print(list_data[3])
输出:
[[1]] [1] "Learnfk" "Toolfk" "Chromefk" [[1]] [[1]][[1]] [1] "BCA" [[1]][[2]] [1] "MCA" [[1]][[3]] [1] "B.tech"
例子 2: 使用名称访问元素
# 创建一个包含向量、矩阵和列表的列表。 list_data <- list(c("Learnfk","Toolfk","Chromefk"), matrix(c(40,80,60,70,90,80), nrow = 2),list("BCA","MCA","B.tech")) # 为列表中的元素命名。 names(list_data) <- c("Student", "Marks", "Course") # 访问列表的第一个元素。 print(list_data["Student"]) print(list_data$Marks) print(list_data)
输出:
$Student [1] "Learnfk" "Toolfk" "Chromefk" [,1] [,2] [,3] [1,] 40 60 90 [2,] 80 70 80 $Student [1] "Learnfk" "Toolfk" "Chromefk" $Marks [,1] [,2] [,3] [1,] 40 60 90 [2,] 80 70 80 $Course $Course[[1]] [1] "BCA" $Course[[2]] [1] "MCA" $Course[[3]] [1] "B. tech."
R允许我们添加,删除或更新列表中的元素。我们可以从任何地方更新列表的元素,但是元素只能在列表的末尾添加或删除。要从指定的索引中删除元素,我们将为其分配一个空值。我们可以通过从新值中覆盖列表元素来更新它。让我们看一个示例,以了解如何添加,删除或更新列表中的元素。
例子
# 创建一个包含向量、矩阵和列表的列表。 list_data <- list(c("Learnfk","Toolfk","Chromefk"), matrix(c(40,80,60,70,90,80), nrow = 2), list("BCA","MCA","B.tech")) # 为列表中的元素命名。 names(list_data) <- c("Student", "Marks", "Course") # 在列表末尾添加元素。 list_data[4] <- "Moradabad" print(list_data[4]) # 删除最后一个元素。 list_data[4] <- NULL # 打印第四个元素。 print(list_data[4]) # 更新第三个元素。 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()函数。
例子
# 创建列表 list1 <- list(10:20) print(list1) list2 <-list(5:14) print(list2) # 将列表转换为向量。 v1 <- unlist(list1) v2 <- unlist(list2) print(v1) print(v2) adding the vectors result <- v1+v2 print(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函数,然后它返回一个列表,其中包含列表中存在的所有元素。让我们看一个示例,以了解合并过程是如何完成的。
例子
# 创建两个列表。 Even_list <- list(2,4,6,8,10) Odd_list <- list(1,3,5,7,9) # 合并两个列表。 merged.list <- list(Even_list,Odd_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
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)