R - Danh sách

Danh sách là các đối tượng R chứa các phần tử thuộc các kiểu khác nhau như - số, chuỗi, vectơ và một danh sách khác bên trong nó. Một danh sách cũng có thể chứa một ma trận hoặc một hàm dưới dạng các phần tử của nó. Danh sách được tạo bằnglist() chức năng.

Tạo danh sách

Sau đây là một ví dụ để tạo một danh sách chứa chuỗi, số, vectơ và giá trị lôgic.

# Create a list containing strings, numbers, vectors and a logical
# values.
list_data <- list("Red", "Green", c(21,32,11), TRUE, 51.23, 119.1)
print(list_data)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[[1]]
[1] "Red"

[[2]]
[1] "Green"

[[3]]
[1] 21 32 11

[[4]]
[1] TRUE

[[5]]
[1] 51.23

[[6]]
[1] 119.1

Đặt tên phần tử danh sách

Các phần tử danh sách có thể được đặt tên và chúng có thể được truy cập bằng các tên này.

# Create a list containing a vector, a matrix and a list.
list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
   list("green",12.3))

# Give names to the elements in the list.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")

# Show the list.
print(list_data)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

$`1st_Quarter`
[1] "Jan" "Feb" "Mar"

$A_Matrix
     [,1] [,2] [,3]
[1,]    3    5   -2
[2,]    9    1    8

$A_Inner_list
$A_Inner_list[[1]]
[1] "green"

$A_Inner_list[[2]]
[1] 12.3

Truy cập các phần tử danh sách

Các phần tử của danh sách có thể được truy cập bằng chỉ mục của phần tử trong danh sách. Trong trường hợp danh sách được đặt tên, nó cũng có thể được truy cập bằng cách sử dụng tên.

Chúng tôi tiếp tục sử dụng danh sách trong ví dụ trên -

# Create a list containing a vector, a matrix and a list.
list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
   list("green",12.3))

# Give names to the elements in the list.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")

# Access the first element of the list.
print(list_data[1])

# Access the thrid element. As it is also a list, all its elements will be printed.
print(list_data[3])

# Access the list element using the name of the element.
print(list_data$A_Matrix)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

$`1st_Quarter`
[1] "Jan" "Feb" "Mar"

$A_Inner_list
$A_Inner_list[[1]]
[1] "green"

$A_Inner_list[[2]]
[1] 12.3

     [,1] [,2] [,3]
[1,]    3    5   -2
[2,]    9    1    8

Thao tác các phần tử danh sách

Chúng ta có thể thêm, xóa và cập nhật các phần tử danh sách như hình dưới đây. Chúng ta chỉ có thể thêm và xóa các phần tử ở cuối danh sách. Nhưng chúng tôi có thể cập nhật bất kỳ phần tử nào.

# Create a list containing a vector, a matrix and a list.
list_data <- list(c("Jan","Feb","Mar"), matrix(c(3,9,5,1,-2,8), nrow = 2),
   list("green",12.3))

# Give names to the elements in the list.
names(list_data) <- c("1st Quarter", "A_Matrix", "A Inner list")

# Add element at the end of the list.
list_data[4] <- "New element"
print(list_data[4])

# Remove the last element.
list_data[4] <- NULL

# Print the 4th Element.
print(list_data[4])

# Update the 3rd Element.
list_data[3] <- "updated element"
print(list_data[3])

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[[1]]
[1] "New element"

$<NA>
NULL

$`A Inner list`
[1] "updated element"

Hợp nhất danh sách

Bạn có thể hợp nhất nhiều danh sách thành một danh sách bằng cách đặt tất cả các danh sách bên trong một hàm list ().

# Create two lists.
list1 <- list(1,2,3)
list2 <- list("Sun","Mon","Tue")

# Merge the two lists.
merged.list <- c(list1,list2)

# Print the merged list.
print(merged.list)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[[1]]
[1] 1

[[2]]
[1] 2

[[3]]
[1] 3

[[4]]
[1] "Sun"

[[5]]
[1] "Mon"

[[6]]
[1] "Tue"

Chuyển đổi danh sách thành vectơ

Một danh sách có thể được chuyển đổi thành một vectơ để các phần tử của vectơ có thể được sử dụng để thao tác thêm. Tất cả các phép toán số học trên vectơ có thể được áp dụng sau khi danh sách được chuyển thành vectơ. Để thực hiện chuyển đổi này, chúng tôi sử dụngunlist()chức năng. Nó lấy danh sách làm đầu vào và tạo ra một vector.

# Create lists.
list1 <- list(1:5)
print(list1)

list2 <-list(10:14)
print(list2)

# Convert the lists to vectors.
v1 <- unlist(list1)
v2 <- unlist(list2)

print(v1)
print(v2)

# Now add the vectors
result <- v1+v2
print(result)

Khi chúng tôi thực thi đoạn mã trên, nó tạo ra kết quả sau:

[[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