R语言 从列表中创建矩阵和数据框
在R编程中,有5个基本对象。Lists是可以包含不同类型的元素的对象,与向量不同。矩阵可以包含相同类型的元素或同质元素。另一方面,数据框架与矩阵类似,但比矩阵更有优势,可以保留异质元素。在这篇文章中,我们将学习如何使用列表创建矩阵和数据框架。
使用列表创建矩阵
矩阵是用R编程中的matrix()函数创建的。另一个将被使用的函数是unlist()函数,用于将列表转换为矢量。创建的向量包含给定列表的原子成分。
语法:
unlist(x, recursive = TRUE, use.names = TRUE)
参数
x: 代表列表
recursive: 代表逻辑值。如果是FALSE,函数将不会递归到列表的第一层以上
use.names: 代表逻辑值,以保留命名信息。
例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