R语言 二维列表

R语言 二维列表

R语言中的列表基本上是一个R对象,其中包含属于不同数据类型的元素,这些元素可能是数字、字符串甚至是其他列表。基本上,一个列表可以包含其他对象,这些对象可能有不同的长度。

一个二维列表可以被认为是一个 “列表的列表”。一个二维列表可以被看作是一个矩阵,其中每一行可以有不同的长度,并支持不同的数据类型。

创建二维列表

一维列表可以首先使用 list() 函数创建。它们可以被进一步包围到另一个外层列表中。外层列表的长度是它所包含的内层列表的数量,这可以通过 length() 函数访问。各个内列表的长度可以通过使用length(list[[index]])函数的索引来计算,其中相应的索引是由[[]]访问。

# list1 and list2 are uni-dimensional lists
list1 <- list (c(1:5), "hi", 0 + 5i)
list2 <- list(c(6:8))
  
# create a list_data with two lists as its elements
list_data <- list(list1, list2)
print ("The two-dimensional list is : ")
print (list_data)
  
cat("Length of nested list is : ", 
     length (list_data))
cat("Length of first inner list is : ", 
     length (list_data[[1]]))

输出

[1] "The two-dimensional list is : "
[[1]]
[[1]][[1]]
[1] 1 2 3 4 5

[[1]][[2]]
[1] "hi"

[[1]][[3]]
[1] 0+5i

[[2]]
[[2]][[1]]
[1] 6 7 8
Length of nested list is :  2
Length of first inner list is :  3

第一个列表包含三个元素,大小和数据类型各不相同,一个1到5的数字序列,一个字符串和一个复数。第二个列表包含一个长度为3的向量,由数字6到8组成。

访问嵌套列表

列表中的所有元素都可以通过一个嵌套的for循环来访问。外循环运行到外列表的元素数。内循环包括内列表的各个长度。
下面的R代码表明在二维列表中工作。

# list1 and list2 are uni-dimensional lists
list1 <- list (c(1:5), "hi", 0 + 5i)
list2 <- list(c(6:8))
  
# create a list_data with two lists as its elements
list_data <- list(list1, list2)
  
# runs until the length of outer list
for (i in c(1 : length(list_data)))
{
    # runs until the length of inner lists at ith indices
    for (j in c(1: length(list_data[[i]])))
    { 
        cat ("List", i, "element", j, ": ")
        print (list_data[[i]][[j]])
    }
}

输出

List 1 element 1 : [1] 1 2 3 4 5
List 1 element 2 : [1] "hi"
List 1 element 3 : [1] 0+5i
List 2 element 1 : [1] 6 7 8

删除或更新元素

  • 删除或修改内列表
    内列表可以通过单层索引来修改。相应的内列表元素被设置为一个新值。如果新值等于NULL,该元素被删除,否则被修改。

  • 删除或更新内部列表的元素
    内列表的元素可以通过双级索引来删除或修改。要修改的元素被设置为一个新的值。如果该值为NULL,相应的元素被删除。否则,被修改。

列表的修改
下面的R代码用于修改列表。

# list1 and list2 are uni-dimensional lists
list1 <- list (c(1:5), "hi", 0 + 5i)
list2 <- list(c(6:8))
 
# create a list_data with two lists as its elements
list_data <- list(list1, list2)
print ("The original list is : ")
print (list_data)
 
# modifying third component of first list
list_data[[1]][[3]] = "you"
print ("Modification 1")
print (list_data)
 
# modifying second inner list
list_data[[2]] <- list (c(0:3))
print ("Modification 2")
print (list_data)

输出:

[1] "The original list is : "
[[1]]
[[1]][[1]]
[1] 1 2 3 4 5

[[1]][[2]]
[1] "hi"

[[1]][[3]]
[1] 0+5i


[[2]]
[[2]][[1]]
[1] 6 7 8


[1] "Modification 1"
[[1]]
[[1]][[1]]
[1] 1 2 3 4 5

[[1]][[2]]
[1] "hi"

[[1]][[3]]
[1] “you”

[[2]]
[[2]][[1]]
[1] 6 7 8


[1] "Modification 2"
[[1]]
[[1]][[1]]
[1] 1 2 3 4 5

[[1]][[2]]
[1] "hi"

[[1]][[3]]
[1] "you"


[[2]]
[[2]][[1]]
[1] 0 1 2 3

删除列表
以下是用于删除列表的R代码。

# list1 and list2 are uni-dimensional lists
list1 <- list (c(1:5), "hi", 0 + 5i)
list2 <- list(c(6:8))
 
# create a list_data with two lists as its elements
list_data <- list(list1, list2)
print ("The original list is : ")
print (list_data)
 
# deleting third component of first list
list_data[[1]][[3]] = NULL
print ("Modification 1")
print (list_data)
 
# deleting second inner list
list_data[[2]] <- NULL
print ("Modification 2")
print (list_data)

输出:

[1] "The original list is : "
[[1]]
[[1]][[1]]
[1] 1 2 3 4 5

[[1]][[2]]
[1] "hi"

[[1]][[3]]
[1] 0+5i

[[2]]
[[2]][[1]]
[1] 6 7 8

[1] "Modification 1"
[[1]]
[[1]][[1]]
[1] 1 2 3 4 5

[[1]][[2]]
[1] "hi"

[[2]]
[[2]][[1]]
[1] 6 7 8

[1] "Modification 2"
[[1]]
[[1]][[1]]
[1] 1 2 3 4 5

[[1]][[2]]
[1] "hi"

在修改1之后,内层列表一的大小减少了一个。修改2后,第二个内列表被删除,外列表的大小减少了一个。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程