创建 data.table
data.table 是来自基础 R 的 data.frame 类的增强版本。因此,它的 class()
属性是向量 "data.table" "data.frame"
,在 data.frame 上工作的函数也可以用于 data.table。有许多方法可以创建,加载或强制 data.table。
建立
不要忘记安装和激活 data.table
包
library(data.table)
有一个同名的构造函数:
DT <- data.table(
x = letters[1:5],
y = 1:5,
z = (1:5) > 3
)
# x y z
# 1: a 1 FALSE
# 2: b 2 FALSE
# 3: c 3 FALSE
# 4: d 4 TRUE
# 5: e 5 TRUE
与 data.frame
不同,data.table
不会强迫字符串:
sapply(DT, class)
# x y z
# "character" "integer" "logical"
读入
我们可以从文本文件中读取:
dt <- fread("my_file.csv")
与 read.csv
不同,fread
会将字符串读为字符串,而不是因子。
修改 data.frame
为了提高效率,data.table 提供了一种更改 data.frame 或 list 的方法,以便就地生成 data.table(无需复制或更改其内存位置):
# example data.frame
DF <- data.frame(x = letters[1:5], y = 1:5, z = (1:5) > 3)
# modification
setDT(DF)
请注意,我们不会分配结果,因为对象 DF
已就地修改。将保留 data.frame 的类属性:
sapply(DF, class)
# x y z
# "factor" "integer" "logical"
将对象强制转换为 data.table
如果你有 list
,data.frame
或 data.table
,你应该使用 setDT
函数转换为 data.table
,因为它通过引用进行转换而不是复制(as.data.table
可以)。如果你正在处理大型数据集,这一点很重要。
如果你有另一个 R 对象(例如矩阵),你必须使用 as.data.table
将它强制转换为 data.table
。
mat <- matrix(0, ncol = 10, nrow = 10)
DT <- as.data.table(mat)
# or
DT <- data.table(mat)