建立 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

如果你有 listdata.framedata.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)