編輯值

# example data
DT = as.data.table(mtcars, keep.rownames = TRUE)

編輯列

使用 j 中的:= 運算子建立新列或修改現有列:

DT[, mpg_sq := mpg^2]

編輯行的子集

使用 i 引數子集到行 where 應該進行編輯:

DT[1:3, newvar := "Hello"]

與 data.frame 一樣,我們可以使用行號或邏輯測試進行子集化。修改時可以在 i 中使用[ajoin[need_a_link]。

刪除列

通過設定為 NULL 刪除列:

DT[, mpg_sq := NULL]

請注意,由於 DT 已就地修改,因此我們不會分配結果。

編輯多個列

使用:= 運算子的多變數格式新增多個列:

DT[, `:=`(mpg_sq = mpg^2, wt_sqrt = sqrt(wt))]
# or 
DT[, c("mpg_sq", "wt_sqrt") := .(mpg^2, sqrt(wt))]

LHS := RHS 的右側是列列表時,使用 .() 語法。

編輯多個依賴於順序的列

如果列是依賴的並且必須按順序定義,則執行此操作的一些方法是:

DT[, c("mpg_sq", "mpg2_hp") := .(temp1 <- mpg^2, temp1/hp)]
# or
DT[, c("mpg_sq", "mpg2_hp") := {temp1 = mpg^2; .(temp1, temp1/hp)}]

按動態確定的名稱編輯列

對於動態確定的列名稱,請使用括號:

vn = "mpg_sq"
DT[, (vn) := mpg^2]

使用 set

也可以使用 set 修改列,以減少開銷,但這很少是必要的:

set(DT, j = "hp_over_wt", v = mtcars$hp/mtcars$wt)