R 列表

R 列表是实时中最强大和最有用的数据结构之一。它允许我们存储各种类型的元素,如整数、字符串、向量、矩阵、列表(嵌套)、数据框等。因此,大多数人称列表为高级向量。在这里,我们将通过一个例子展示如何在编程语言中创建、访问元素、操作它们以及创建命名列表。

创建 R 列表

在此示例中,我们将创建一个包含不同元素的列表。最常见的创建方式。

list.data <- list("Tutorial", "Gateway", TRUE, c(10, 20, 30), 95, 105.61)
print(list.data)

在这里,我们创建了一个包含两个字符串、一个布尔值、一个向量和数字值的列表。

Print Data 1

在此示例中,我们将使用向量在此编程中创建列表。

# Creating three vectors
vect.a <- c(10.25, 20.45, 30.75, 40.85)
vect.b <- c(25, 50, 75, 100, 125)
vect.c <- c("India", "China", "Japan", "Russia", "USA") 

list.data <- list(vect.a, vect.b, vect.c )
print(list.data)
convert Vector to LIST 2

在 R 中使用矩阵和向量创建列表

在此示例中,我们将使用 矩阵向量 创建列表。在这个 R 编程 示例中,我们首先创建了两个向量 vect.a 和 vect.b 并分配了一些随机值。在第 6 行,我们从上述指定的向量创建了一个列表。

接下来,我们声明了一个 3 * 4 的矩阵和一个随机值向量。在第 12 行,它创建了一个包含矩阵、向量和列表(嵌套)的列表。

vect.a <- c(10.25, 30.75, 20.45, 40.85)
vect.b <- c("India", "Japan", "Russia", "China", "USA") 

list.data <- list(vect.a, vect.b )
print(list.data)

A <- matrix(c(1:12), nrow = 3)
vect.c <- c(50, 75, 25, 100, 125)

list.mixed <- list(A, list.data, vect.c )
print(list.mixed)
Creating R List using Matrix, Vectors 3

创建命名列表

它展示了在编程中创建命名列表的步骤,语法是:list_Name <- c(“index_Name1” = Value1, “index_Name2″ = Value2,… ,”index_NameN” = ValueN )

list.data <- list("Company" = "Tutorial Gateway", "Flag" = TRUE, "prod" = c(10, 20, 30), "val" = 95, "sale" = 105.61)
print(list.data)

正如您所见,我们正在为列表元素分配名称。这对于使用这些字符向量的索引值访问元素非常有用。例如,print(listname.data$Company)

Named Example 4

使用 names 函数创建命名列表

names 函数对于分配名称非常有用。让我们看看如何在 R 中为已创建的列表分配名称。其语法是:names(<list name>) <- c(“name1”, “name2″…., “nameN”).

vect.x <- c(10, 30, 50, 70)
vect.y <- c("India", "Japan", "UK", "Russia", "China", "USA") 

list.a <- list(vect.x, vect.y )
# Assigning Names
names(list.a) <- c("Num_Vector", "Country") 
print(list.a)

matrix.A <- matrix(c(1:12), 3, 4)
vect.z <- c(55, 75, 25, 105, 125)

list.mixed <- list(matrix.A, list.a, vect.z, "Tutorial Gateway")
names(list.mixed) <- c("Num_Matrix", "Inner_List", "Rand_vector", "Company")
print(list.mixed)
List using names function 5

访问 R 列表元素

我们可以通过此编程中的索引位置来访问列表中的元素。索引值从 1 开始,到 n 结束,其中 n 是元素的数量。

例如,如果我们声明一个存储 10 个元素(不同类型或相同类型)的列表,则索引从 1 开始,到 10 结束。要访问或修改第一个值,请使用 List_Name[1],要修改或访问第 10 个值,请使用 List_Name[10]。让我们来看一个例子以便更好地理解。

vect.a <- c(10.25, 30.75, 20.45, 40.85)
vect.b <- c("India", "Japan", "Russia", "China", "USA") 
vect.c <- c(50, 75, 25, 100, 125)

A <- matrix(c(1:12), 3, 4)

list.data <- list(A, vect.a, "Tutorial Gateway", vect.b, 95, vect.c )
print(list.data)

# Accessing First Element
print(list.data[1])

# Accessing Fourth Element
print(list.data[4])
Accessing List Elements 6

使用名称访问列表项

如果我们使用名称声明列表项或为项分配名称,则可以使用这些名称来访问元素。让我们使用索引名称访问下面的项。其语法是:<listname>$Index_Name

vect.x <- c(10, 30, 50, 70)
vect.y <- c("India", "Russia", "Japan", "UK", "China", "USA") 

list.data <- list(vect.x, vect.y )
names(list.data) <- c("Numeric_Vector", "Country") 

matrix.A <- matrix(c(1:12), 3, 4)
vect.z <- c(55, 75, 25, 105, 125)

list.mixed <- list(matrix.A, list.data, vect.z, "Tutorial Gateway")
names(list.mixed) <- c("Numeric_Matrix", "Nested_List", "Random_vector", "Company")
print(list.mixed)

# Accessing Vector.z Elements
print(list.mixed$Random_vector)

# Accessing Vector.z Elements
print(list.mixed$Numeric_Matrix)

# Accessing Nested Elements
print(list.mixed$Nested_List)
Accessing List items using Names 7

负索引位置用于从此编程中的列表中省略这些值。此示例使用布尔向量访问项。

vect.a <- c(10.25, 30.75, 20.45, 40.85)
vect.b <- c("India", "Japan", "Russia", "China", "USA") 
vect.c <- c(50, 75, 25, 100, 125)

A <- matrix(c(1:12), 3, 4)

list.data <- list(A, vect.a, "Tutorial Gateway", vect.b, 95, vect.c )
print(list.data)

# Accessing Element using Boolean Vector
print(list.data[c(FALSE, FALSE, TRUE, FALSE, TRUE, TRUE)])

# Accessing All except 1
print(list.data[-1])

# Accessing All except 4
print(list.data[-4])

# Accessing All Element except 1 and 6th element
print(list.data[c(-1, -6)])
Access LIST Items Using boolean vector 8

输出 2

printing data using negative values 9

操作 R 列表元素

我们可以通过以下方式操作元素:第 15 行访问名称为 Company 的元素,并将现有名称(即 Tutorial Gateway)替换为 tutorialgateway.org。

在第 18 行,我们正在访问名称为 Random_Vector 的项,并将现有向量(即 vect.z)替换为新的向量值 c(22, 44, 66, 88)。

第 21 行删除了名称为 Numeric_Matrix 的项。

vect.x <- c(10, 30, 50, 70)
vect.y <- c("India", "Russia", "Japan", "UK", "China", "USA") 

list.data <- list(vect.x, vect.y )
names(list.data) <- c("Numeric_Vector", "Country") 

matrix.A <- matrix(c(1:12), 3, 4)
vect.z <- c(55, 75, 25, 105, 125)

list.mixed <- list(matrix.A, list.data, 95, vect.z, "Tutorial Gateway")
names(list.mixed) <- c("Numeric_Matrix", "Nested_List", "favNum", "Random_vector", "Company")
print(list.mixed)

list.mixed$Company <- "Tutortialgateway.org"
print(list.mixed$Company)

list.mixed$Random_vector <- c(22, 44, 66, 88)
print(list.mixed$Random_vector)

list.mixed$Numeric_Matrix <- NULL
print(list.mixed)
Manipulate List Elements

我们可以将两个列表合并成一个大的列表。

#Declared Two vector
vect.a <- c(10.25, 30.75, 20.45, 40.85)
vect.b <- c("India", "Japan", "Russia", "China", "USA") 

# Create from those two Vectors Vect.a, Vect.b
list.x <- list(vect.a, 95, vect.b )
print(list.x)

# Declared One 4 * 3 matrix
A <- matrix(c(1:12), 4, 3)

# Creating second with one String, Matrix, and a vector
list.y <- list("Tutorial Gateway", A, c(5, 10, 15) )
print(list.y)

# Combining or Merging
list.z <- c(list.x, list.y)
print(list.z)
Manipulate items 11

我们可以将列表转换为向量。这种转换可以帮助我们在最低级别执行操作。

list.x <- list(1:15)
list.y <- list(25:40)
print(list.x)
print(list.y)
typeof(list.x)

vect.a <- unlist(list.x)
print(vect.a)

vect.b <- unlist(list.y)
print(vect.b)