在 R 中创建大型数据框

Jinku Hu 2023年1月30日 2021年7月14日
  1. 在 R 中使用向量和因子创建数据框
  2. 在 R 中使用 List 创建数据框
  3. 在 R 中使用矩阵创建数据框
在 R 中创建大型数据框

本文将解释在 R 中创建大型数据框的几种方法。

在 R 中使用向量和因子创建数据框

数据框是 R 语言最强大的内置数据结构,它类似于表格矩阵,其中每一列的长度相同,并且它们必须有名称。但是,在下面,它具有更多类似列表的功能,因为数据框的每一列都被视为列表数据结构的一个元素。从好的方面来说,我们可以使用向量和因子的混合构造一个数据框,如下面的代码片段所示。我们使用 data.frame 函数从向量和因子构建一个数据框对象。

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)
v3 <- c(1, 2, 3, 1, 2, 3)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri"))

df2 <- data.frame(v1, v2, v3, wday)

输出:

v1 v2 v3 wday
1 1.1 11  1  Wed
2 1.2 12  2  Thu
3 1.3 13  3  Mon
4 2.1 21  1  Wed
5 2.2 22  2  Thu
6 2.3 23  3  Fri

在 R 中使用 List 创建数据框

或者,可以使用列表对象创建数据框对象。虽然,此方法需要一个名为 as.data.frame 的不同函数,它将单个列表对象转换为数据框。请注意,我们在下面的示例中使用 list 函数构造列表对象,并将调用作为 as.data.frame 的参数链接。由于数据框必须具有列标签,因此如果用户未指定它们,通常会自动选择它们。如果在转换过程中选择了不需要的名称,则始终可以调用 colnames 函数并为其分配一个列名称向量。

v1 <- c(1.1, 1.2, 1.3, 2.1, 2.2, 2.3)
v2 <- c(11, 12, 13, 21, 22, 23)
v3 <- c(1, 2, 3, 1, 2, 3)
wday <- factor(c("Wed", "Thu", "Mon", "Wed", "Thu", "Fri"))

df1 <- as.data.frame(list(v1, v2, v3, wday))
colnames(df1) <- c("v1", "v2", "v3", "wday")
df1

输出:

v1 v2 v3 wday
1 1.1 11  1  Wed
2 1.2 12  2  Thu
3 1.3 13  3  Mon
4 2.1 21  1  Wed
5 2.2 22  2  Thu
6 2.3 23  3  Fri

在 R 中使用矩阵创建数据框

有时,需要大量的数据帧分配,用向量或列表进行初始化是不切实际的。幸运的是,matrix 函数提供了一种通过指定行/列号来构建大型数据框的简单快捷的方法。或者,可以使用作为第一个参数传递的向量来初始化数据帧中的值。否则,元素将具有 NA 值。

m1 <- matrix(1:1000, ncol = 10, nrow = 100)
df1 <- as.data.frame(m1)
df1

输出:

V1  V2  V3  V4  V5  V6  V7  V8  V9  V10
1     1 101 201 301 401 501 601 701 801  901
2     2 102 202 302 402 502 602 702 802  902
....
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相关文章 - R Data Frame