Ответ 1
В этом случае он не отличается от data.frame
data <- data[ menuitem != 'coffee' | amount > 0]
Удалить/добавить строку по ссылке, которая должна быть реализована. Вы найдете дополнительную информацию в этом вопросе
Относительно скорости:
1 Вы можете воспользоваться клавишами, сделав что-то вроде:
setkey(data, menuitem)
data <- data[!"coffee"]
который будет быстрее, чем data <- data[ menuitem != 'coffee']
. Однако для применения тех же фильтров, которые вы задали в вопросе, вам понадобится скользящее соединение (я закончил перерыв на обед, я могу добавить что-то позже: -)).
2 Даже без ключевого data.table намного быстрее для относительно большой таблицы (аналогичная скорость для небольшого количества строк)
dt<-data.table(id=sample(letters,1000000,T),var=rnorm(1000000))
df<-data.frame(id=sample(letters,1000000,T),var=rnorm(1000000))
library(microbenchmark)
> microbenchmark(dt[ id == "a"], df[ df$id == "a",])
Unit: milliseconds
expr min lq median uq max neval
dt[id == "a"] 24.42193 25.74296 26.00996 26.35778 27.36355 100
df[df$id == "a", ] 138.17500 146.46729 147.38646 149.06766 154.10051 100