R语言 对列表的操作
R语言中的列表是由不同类型的元素组成的对象,如数字、字符串、逻辑值、向量、列表中的列表以及矩阵和函数作为其元素。
一个列表是用 list() 函数生成的。它基本上是一个包含不同对象的通用向量。R允许其用户对列表进行各种操作,可以用来说明不同形式的数据。
创建一个列表
R中的列表可以通过在 list() 函数中放置序列来创建。
# Creating a list.
Geek_list <- list("Geek", "RList”, c(65, 21, 80), TRUE, 27.02, 10.3)
print(Geek_list)
输出
[[1]]
[1] "Geek"
[[2]]
[1] "RList"
[[3]]
[1] 65 21 80
[[4]]
[1] TRUE
[[5]]
[1] 27.02
[[6]]
[1] 10.3
命名列表中的元素
可以给列表中的元素指定名称,这些名称可以用来访问这些元素。
# Creating a List
Geek_list <- list(c("Geeks", "For", "Geeks"),
matrix(c(1:9), nrow = 3),
list("Geek", 12.3))
# Naming each element of the list
names(Geek_list) <- c("This_is_a_vector",
"This_is_a_Matrix",
"This_is_a_listwithin_the_list")
# Printing the list
print(Geek_list)
输出
$This_is_a_vector
[1] "Geeks" "For" "Geeks"
$This_is_a_Matrix
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
$This_is_a_listwithin_the_list
$This_is_a_listwithin_the_list[[1]]
[1] "Geek"
$This_is_a_listwithin_the_list[[2]]
[1] 12.3
访问列表中的元素
为了访问列表中的元素,可以使用索引号,如果是命名的列表,也可以使用其名称访问元素。
# Creating a List
Geek_list <- list(c("Geeks", "For", "Geeks"),
matrix(c(1:9), nrow = 3),
list("Geek", 12.3))
# Naming each element of the list
names(Geek_list) <- c("This_is_a_vector",
"This_is_a_Matrix",
"This_is_a_listwithin_the_list")
# To access the first element of the list.
print(Geek_list[1])
# To access the third element.
print(Geek_list[3])
# To access the list element using the name of the element.
print(Geek_list$This_is_a_Matrix)
输出
$This_is_a_vector
[1] "Geeks" "For" "Geeks"
$This_is_a_listwithin_the_list
$This_is_a_listwithin_the_list[[1]]
[1] "Geek"
$This_is_a_listwithin_the_list[[2]]
[1] 12.3
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
添加、删除和更新列表中的元素
在 R 中,一个新的元素可以被添加到列表中,现有的元素可以被删除或更新。
# Creating a List
Geek_list <- list(c("Geeks", "For", "Geeks"),
matrix(c(1:9), nrow = 3),
list("Geek", 12.3))
# Naming each element of the list
names(Geek_list) <- c("This_is_a_vector",
"This_is_a_Matrix",
"This_is_a_listwithin_the_list")
# To add a new element.
Geek_list[4] <- "New element"
print(Geek_list)
# To remove the last element.
Geek_list[4] <- NULL
# To print the 4th Element.
print(Geek_list[4])
# To update the 3rd Element.
Geek_list[3] <- "updated element"
print(Geek_list[3])
输出
$This_is_a_vector
[1] "Geeks" "For" "Geeks"
$This_is_a_Matrix
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
$This_is_a_listwithin_the_list
$This_is_a_listwithin_the_list[[1]]
[1] "Geek"
$This_is_a_listwithin_the_list[[2]]
[1] 12.3
[[4]]
[1] "New element"
$
NULL
$This_is_a_listwithin_the_list
[1] "updated element"
合并一个列表的元素
许多列表可以合并为一个列表,所有的列表元素都放在一个列表中。
# Firstly, create two lists.
list1 <- list(1, 2, 3, 4, 5, 6, 7)
list2 <- list("Geeks", "For", "Geeks")
# Then to merge these two lists.
merged_list <- c(list1, list2)
print(merged_list)
输出
[[1]]
[1] 1
[[2]]
[1] 2
[[3]]
[1] 3
[[4]]
[1] 4
[[5]]
[1] 5
[[6]]
[1] 6
[[7]]
[1] 7
[[8]]
[1] "Geeks"
[[9]]
[1] "For"
[[10]]
[1] "Geeks"
将列表转换为向量
为了进行算术运算,应使用 unlist() 函数将列表转换为向量。
# Firstly, create lists.
list1 <- list(1:5)
print(list1)
list2 <-list(11:15)
print(list2)
# Now, convert the lists to vectors.
v1 <- unlist(list1)
v2 <- unlist(list2)
print(v1)
print(v2)
# Now add the vectors
result_vector <- v1+v2
print(result_vector)
输出
[[1]]
[1] 1 2 3 4 5
[[1]]
[1] 11 12 13 14 15
[1] 1 2 3 4 5
[1] 11 12 13 14 15
[1] 12 14 16 18 20