編輯值
# 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)