从 R 编程中的列表创建矩阵和数据框
在 R 编程中,有 5 个基本对象。与向量不同,列表是可以包含异构类型元素的对象。矩阵可以包含相同类型的元素或同质元素。另一方面,数据帧类似于矩阵,但在保留异构元素方面比矩阵具有优势。在本文中,我们将学习使用列表创建矩阵和数据框。
使用列表创建矩阵
矩阵是使用 R 编程中的matrix()
函数创建的。将使用的另一个函数是unlist()
函数,用于将列表转换为向量。创建的向量包含给定列表的原子组件。
Syntax:
unlist(x, recursive = TRUE, use.names = TRUE)
Parameters:
x: represents list
recursive: represents logical value. If FALSE, function will not recurse beyond first level of list
use.names: represents logical value to preserve the naming information
示例 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