Подтвердить что ты не робот

Какова практическая разница между data.frame и data.table в R

По-видимому, в моем последнем вопросе я продемонстрировал путаницу между data.frame и data.table. По общему признанию, я не понимал, что существует различие.

Итак, я читаю о помощи для каждого, но в практических, повседневных условиях, в чем разница, какие последствия и какие из них используются для этого, помогут мне в их правильном использовании?

4b9b3361

Ответ 1

Хотя это широкий вопрос, если кто-то не знаком с R, это может сбивать с толку, и различие может быть потеряно.

Все data.table также data.frame s. Говоря кратко, вы можете думать о data.tables как data.frames с дополнительными функциями.

data.frame является частью базы R.

data.table - это пакет, который расширяет data.frames. Две из его наиболее примечательных особенностей - синтаксис скорости и чистого.

Однако этот синтаксический сахар отличается от стандартного синтаксиса R для data.frame, будучи трудным для неподготовленного глаза, чтобы отличить сразу. Поэтому, если вы читаете фрагмент кода и нет другого контекста, указывающего на то, что вы работаете с data.tables и пытаетесь применить код к data.frame, он может выйти из строя или вызвать неожиданные результаты. (явная подделка, что вы работаете с d.t, кроме вызова library/require есть наличие оператора присваивания :=, который уникален для d.t)

При всем этом, я думаю, что трудно оценить красоту data.table, не испытывая недостатков data.frame. (например, см. первые 3 балла точки ответа @eddi). Другими словами, я бы очень хотел научиться работать с data.frames и манипулировать им сначала, а затем перейти к data.table s.

Ответ 2

Несколько различий в моей повседневной жизни, которые приходят на ум (в определенном порядке):

  • не нужно указывать имя data.table снова и снова (приводящее к неуклюжим синтаксису и глупым ошибкам) ​​в выражениях (на оборотной стороне иногда я пропускаю завершение имен TAB)
  • гораздо быстрее и очень интуитивно понятные операции by
  • не отчаянно ударяя Ctrl-C после ввода df, забыв, насколько велика df (также почти никогда не использующая head)
  • быстрее и лучше читать файлы с помощью fread
  • пакет также предоставляет ряд других функций полезности, таких как %between% или rbindlist, которые улучшают жизнь
  • быстрее все остальное, так как много операций data.frame копирует всю вещь без необходимости

Ответ 3

Они похожи. Кадры данных представляют собой списки векторов равной длины, тогда как таблицы данных (data.table) являются наследованием кадров данных. Поэтому таблицы данных представляют собой кадры данных, но кадры данных необязательно представляют собой таблицы данных. Пакет и функция таблиц данных были написаны для повышения скорости индексирования, упорядоченных объединений, присвоения, группирования и перечисления столбцов (и т.д.).

Подробнее см. http://datatable.r-forge.r-project.org/datatable-intro.pdf.