R语言列表用法详解与常见操作指南
时间:2026-08-15 | 作者:宇宙开黑者 | 阅读:0列表是 R 语言的对象集合,可以用来保存不同类型的数据。它可以包含数字、字符串、向量、另一个列表、矩阵、数据框等,当然还可以包含矩阵和函数。
列表是一种灵活的数据结构,可以存储和操作多种类型的数据对象。
创建列表
R 语言创建列表使用 list() 函数。
如下实例,我们创建一个列表,包含了字符串、向量和数字:
实例
list_data <- list("runoob", "google", c(11,22,33), 123, 51.23, 119.1)
print(list_data)
执行以上代码输出结果为:
[[1]]
[1] "runoob"
[[2]]
[1] "google"
[[3]]
[1] 11 22 33
[[4]]
[1] 123
[[5]]
[1] 51.23
[[6]]
[1] 119.1
我们也可以使用 c() 函数来创建列表,也可以使用该函数将多个对象合并为一个列表,例如:
my_list <- c(object1, object2, object3)
实例
# 创建包含数字的向量
numbers <- c(1, 2, 3, 4, 5)
# 创建包含字符的向量
characters <- c("apple", "banana", "orange")
# 合并两个数字向量
merged_vector <- c(numbers, c(6, 7, 8))
# 合并两个字符向量
merged_characters <- c(characters, c("grape", "melon"))
为列表元素命名
我们可以使用 names() 函数给列表的元素命名:
实例
# 列表包含向量、矩阵、列表
list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
list("runoob",12.3))
# 给列表元素设置名字
names(list_data) <- c("Sites", "Numbers", "Lists")
# 显示列表
print(list_data)
执行以上代码输出结果为:
$Sites
[1] "Google" "Runoob" "Taobao"
$Numbers
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
$Lists
$Lists[[1]]
[1] "runoob"
$Lists[[2]]
[1] 12.3
访问列表
列表中的元素可以使用索引来访问。
如果使用 names() 函数命名后,我们还可以使用对应名字来访问。
实例
# 列表包含向量、矩阵、列表
list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
list("runoob",12.3))
# 给列表元素设置名字
names(list_data) <- c("Sites", "Numbers", "Lists")
# 显示列表
print(list_data[1])
# 访问列表的第三个元素
print(list_data[3])
# 访问第一个向量元素
print(list_data$Numbers)
执行以上代码输出结果为:
$Sites
[1] "Google" "Runoob" "Taobao"
$Lists
$Lists[[1]]
[1] "runoob"
$Lists[[2]]
[1] 12.3
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
操作列表元素
我们可以对列表进行添加、删除、更新的操作,如下实例:
实例
# 列表包含向量、矩阵、列表
list_data <- list(c("Google","Runoob","Taobao"), matrix(c(1,2,3,4,5,6), nrow = 2),
list("runoob",12.3))
# 给列表元素设置名字
names(list_data) <- c("Sites", "Numbers", "Lists")
# 添加元素
list_data[4] <- "新元素"
print(list_data[4])
# 删除元素
list_data[4] <- NULL
# 删除后输出为 NULL
print(list_data[4])
# 更新元素
list_data[3] <- "我替换来第三个元素"
print(list_data[3])
执行以上代码输出结果为:
[[1]]
[1] "新元素"
$
NULL
$Lists
[1] "我替换来第三个元素"
遍历列表
使用 for 循环遍历列表时:
实例
# 创建一个包含数字和字符的列表
my_list <- list(1, 2, 3, "a", "b", "c")
# 使用 for 循环遍历列表中的每个元素
for (element in my_list) {
print(element)
}
在这段代码里,for 循环会按顺序遍历列表 my_list 中的每一项,并把当前取到的元素暂时放进变量 element。
接下来,就可以在循环体里针对这个元素执行相应操作,比如用 print() 函数把它的值输出出来。
for 循环遍历列表时,每次循环都将当前元素赋值给变量 element。
因此,在循环体内可以对 element 进行任何需要的操作,例如计算、条件判断等。
有一点很容易被忽略:用 for 循环遍历列表时,循环变量 element 确实会按顺序拿到列表里的每个元素,但它本身并不能直接把原列表中的元素改掉。
真要修改列表里的值,还是得通过索引来完成,比如 my_list[[index]] <- new_value。
执行以上代码输出结果为:
[1] 1
[1] 2
[1] 3
[1] "a"
[1] "b"
[1] "c"
合并列表
我们可以使用 c() 函数将多个列表合并为一个列表:
实例
# 创建两个列表
list1 <- list(1,2,3)
list2 <- list("Google","Runoob","Taobao")
# 合并列表
merged.list <- c(list1,list2)
# 显示合并后的列表
print(merged.list)
执行以上代码输出结果为:
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] "Google"
[[5]]
[1] "Runoob"
[[6]]
[1] "Taobao"
列表转换为向量
要将列表转换为向量可以使用 unlist() 函数。
将列表转换为向量,可以方便我们进行算术运算:
实例
# 创建列表
list1 <- list(1:5)
print(list1)
list2 <-list(10:14)
print(list2)
# 转换为向量
v1 <- unlist(list1)
v2 <- unlist(list2)
print(v1)
print(v2)
# 两个向量相加
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 语言列表操作和函数:
创建列表
- 使用
c()函数:例如,list1 <- c(1, 2, 3) 创建一个包含 1、2 和 3 的列表。 - 使用
list() 函数:例如,list2 <- list(1, "a", TRUE) 创建一个包含不同类型元素的列表。
访问列表元素
- 使用索引:通过索引访问列表中的元素。例如,list1[1] 返回列表中的第一个元素。
- 使用元素名称:如果列表中的元素有名称,可以使用名称来访问它们。例如,list3 <- list(a = 1, b = 2) 可以通过 list3$a 和 list3$b 来访问元素。
列表操作
- 长度:使用 length() 函数获取列表的长度。例如,length(list1) 返回列表 list1 的长度。
- 合并:使用 c() 函数或 append() 函数将两个或多个列表合并为一个列表。例如,list4 <- c(list1, list2) 合并列表 list1 和 list2。
- 增加元素:使用 c() 函数将元素添加到现有列表中。例如,list1 <- c(list1, 4) 将 4 添加到列表 list1 的末尾。
- 删除元素:使用索引和负索引操作符 - 删除列表中的元素。例如,list1 <- list1[-2] 删除列表 list1 中的第二个元素。
列表循环
- for 循环:使用 for 循环遍历列表中的元素。例如,
for (element in list1) { ... }遍历列表 list1 中的每个元素。 lapply()函数:将一个函数应用于列表中的每个元素,并返回结果列表。例如,new_list <- lapply(list1, function(x) x * 2) 将列表 list1 中的每个元素乘以 2。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- R语言解压与压缩tar.gz、zip等格式文件方法
- 时间:2026-08-17
-
- VSCode配置Move智能合约开发环境教程
- 时间:2026-08-17
-
- Notepad++配置R语言开发与运行环境教程
- 时间:2026-08-17
-
- Sublime Text配置R语言运行环境与数据分析脚本搭建
- 时间:2026-08-17
-
- CentOS系统中Fortran与R语言数据可视化方法
- 时间:2026-08-17
-
- VSCode配置Elixir与Phoenix框架开发环境设置
- 时间:2026-08-17
-
- Sublime配置R语言开发环境教程:R脚本高亮与运行
- 时间:2026-08-17
-
- VSCode中R语言开发如何优化Httpgd图形显示与数据透视
- 时间:2026-08-17
精选合集
更多大家都在玩
大家都在看
更多-
- 糖尿病完全不能吃糖吗
- 时间:2026-09-15
-
- 蚂蚁庄园小课堂2026年9月16日最新题目答案
- 时间:2026-09-15
-
- 小鸡答题今天的答案是什么2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园每日答题答案2026年9月16日
- 时间:2026-09-15
-
- 以下哪种粮食是酿造绍兴黄酒的主要原料 蚂蚁庄园今日答案9月16日
- 时间:2026-09-15
-
- 劝学名句“及时当勉励,岁月不待人”出自哪位诗人 蚂蚁庄园今日答案9.16
- 时间:2026-09-15
-
- 蚂蚁庄园今天答题答案2026年9月16日
- 时间:2026-09-15
-
- 蚂蚁庄园答题今日答案2026年9月16日
- 时间:2026-09-15
