次の例があります。
irisDT <- as.data.table(iris)
mod <- function(dat) {
dat[, index:=(1:nrow(dat))]
setkey(dat, index)
dat <- dat[2:10]
dat[, index:=NULL]
invisible()
}
mod(irisDT)
names(irisDT) # it contains index
驚いたことに、mod()
関数を呼び出した後もインデックス列はまだ存在しています。これは、行を削除した場合には当てはまりませんdat <- dat[2:10]
。まだ参照で行を削除できないので、別のdata.tableが作成されていると思います。ただし、元のdata.tableのインデックス列を削除したいと思います。