Добавить строку по ссылке в конце объекта data.table

В этом вопросе создатель пакета data.table объясняет, почему строки не могут быть вставлены (или удалены) по ссылке в середине data.table . Он также указывает, что такие операции могут быть возможны в конце таблицы. Не могли бы вы показать код, чтобы перенести это действие? Это будет «по ссылке» версия

 a a id var 1: a 1 2: b 2 > rbind(a, data.table(id="c", var=3)) id var 1: a 1 2: b 2 3: c 3 

Благодарю.

РЕДАКТИРОВАТЬ:

поскольку правильное решение пока невозможно, какое из следующего лучше (если оно отличается от другого, не уверенно) либо с точки зрения скорости, либо использования памяти?

 rbind(a, data.table(id="c", var=3)) rbindlist(list(a, data.table(id="c", var=3))) 

существуют ли в конце концов другие (лучшие) методы?

Чтобы ответить на ваше редактирование, просто запустите тест:

 a = data.table(id=letters[1:2], var=1:2) b = copy(a) c = copy(b) # let's also just try modifying same value in place # to see how well changing existing values does microbenchmark(a <- rbind(a, data.table(id="c", var=3)), b <- rbindlist(list(b, data.table(id="c", var=3))), c[1, var := 3L], set(c, 1L, 2L, 3L)) #Unit: microseconds # expr min lq median uq max neval # a <- rbind(a, data.table(id = "c", var = 3)) 865.460 1141.2585 1357.1230 1539.4300 6814.492 100 #b <- rbindlist(list(b, data.table(id = "c", var = 3))) 260.440 325.3835 445.4190 522.8825 1143.930 100 # c[1, `:=`(var, 3L)] 482.147 626.5570 778.3135 904.3595 1109.539 100 #                  set(c, 1L, 2L, 3L)  2.339   5.677   7.5140   9.5170  19.033  100 

rbindlist явно лучше, чем rbind . Благодаря Мэтью Доуле, указывая на проблемы с использованием [ в цикле, я добавил еще один тест с set .

Из вышесказанного ваши лучшие варианты используют rbindlist или размер data.table а затем просто data.table значения (вы также можете использовать аналогичную страtagsю для std::vector на C++ и удваивать размер каждый раз, когда вы заканчиваете пространства, если вы не знаете размер данных для начала, а затем, как только вы закончите заполнение, удалите лишние строки).

  • Эмулировать цветовую палитру по умолчанию ggplot2
  • График временных рядов смещается на 2 часа, если используется scale_x_datetime
  • R - список к кадру данных
  • Многострочные метки оси x в линейной диаграмме ggplot
  • Создание многострочной диаграммы для нескольких переменных - ggplot2 в R
  • Заполнение отсутствующих значений по группам в data.table
  • Преобразование года и месяца (формат «yyyy-mm») на дату?
  • Удалите группы с менее чем тремя уникальными наблюдениями
  • Где R хранит пакеты?
  • Проверьте, содержит ли вектор данный элемент
  • Причины использования функции set.seed
  • Давайте будем гением компьютера.