📜  从 R 编程中的列表创建矩阵和数据框

📅  最后修改于: 2022-05-13 01:55:38.099000             🧑  作者: Mango

从 R 编程中的列表创建矩阵和数据框

在 R 编程中,有 5 个基本对象。与向量不同,列表是可以包含异构类型元素的对象。矩阵可以包含相同类型的元素或同质元素。另一方面,数据帧类似于矩阵,但在保留异构元素方面比矩阵具有优势。在本文中,我们将学习使用列表创建矩阵和数据框。

使用列表创建矩阵

矩阵是使用 R 编程中的matrix()函数创建的。将使用的另一个函数是unlist()函数,用于将列表转换为向量。创建的向量包含给定列表的原子组件。

示例 1:

# Defining list
ls1 <- list(
  list(1, 2, 3),
  list(4, 5, 6))
  
# Print list
cat("The list is:\n")
print(ls1)
cat("Class:", class(ls1), "\n")
  
# Convert list to matrix
mt1 <- matrix(unlist(ls1), nrow = 2, byrow = TRUE)
  
# Print matrix
cat("\nAfter conversion to matrix:\n")
print(mt1)
cat("Class:", class(mt1), "\n")

输出:

The list is:
[[1]]
[[1]][[1]]
[1] 1

[[1]][[2]]
[1] 2

[[1]][[3]]
[1] 3


[[2]]
[[2]][[1]]
[1] 4

[[2]][[2]]
[1] 5

[[2]][[3]]
[1] 6

Class: list 

After conversion to matrix:
     [, 1] [, 2] [, 3]
[1, ]    1    2    3
[2, ]    4    5    6

Class: matrix 

示例 2:

# Defining list
ls2 <- list("A", 10, TRUE, 2i)
  
# Print list
cat("\nThe list is:\n")
print(ls2)
cat("Class:", class(ls2), "\n")
  
# Convert list to matrix
mt2 <- matrix(unlist(ls2), nrow = 2, byrow = TRUE)
  
# Print matrix
cat("\nAfter conversion to matrix:\n")
print(mt2)
cat("Class:", class(mt2), "\n")
cat("\nType:", typeof(mt2), "\n")

输出:

The list is:
[[1]]
[1] "A"

[[2]]
[1] 10

[[3]]
[1] TRUE

[[4]]
[1] 0+2i

Class: list

After conversion to matrix:
     [, 1]   [, 2]  
[1, ] "A"    "10"  
[2, ] "TRUE" "0+2i"

Class: matrix 

Type: character

使用列表创建数据框

同样,可以使用unlist()函数和data.frame()函数使用列表创建数据框。

例子:

# Defining lists
n <- list(1:3)
l <- list(letters[1:3])
m <- list(month.name[1:3])
  
# Convert lists into dataframe columns
df <- data.frame(unlist(n), unlist(l), unlist(m))
  
# Names of columns of dataframe
names(df) <- c("Number", "Letters", "Month")
  
# Print dataframe
cat("The dataframe is :\n")
print(df)

输出:

The dataframe is :
  Number Letters    Month
1      1       a  January
2      2       b February
3      3       c    March