2013-04-22 3 views
1

Лучше здесь может означать более быстрый или легкий для чтения/более короткий синтаксис, или это также может означать, что эта команда даже не выполнима в data.table.когда лучше, чем data.table?

Я не использую plyr много и хотел бы знать, есть ли случаи, когда я должен. Поскольку я не использую его много, единственный пример, который я могу придумать, - это rbind.fill, который, насколько мне известно, не имеет аналога data.table, и каждый другой пример, который я видел, как в plyr, так и в data.table, последнее было быстрее и легче читать/более компактно.

+4

Это _way_ слишком широкий. –

+3

** plyr ** не будет (в общем) быстрее, чем ** data.table **. Некоторые люди (например, я) находят синтаксис прежнего гораздо более понятным и понятным, чем последний. Но это всего лишь субъективный выбор. – joran

+0

@Arun thx, я посмотрю на эти функции. Делает ли 'plyr' что-нибудь для' data.frame' лучше? – eddi

ответ

12

Это разные пакеты с различными целями. Один из них не заменяет другого, несмотря на наличие небольшого набора функций, для которого они перекрываются.

Вот краткое описание каждого пакета, от самих пакетов:

Пакет plyr представляет собой набор чистых и последовательных инструментов, реализующих разделенным применять-скомбинировать шаблон в R. Это чрезвычайно распространенная схема анализа данных: вы решаете сложную задачу, разбивая ее на мелкие кусочки, делая что-то для каждой части, а затем снова объединяете результаты.

и

data.table ... предлагают быстрое подмножество, быструю группировку, быстрое обновление, быстро упорядоченное присоединяется и список столбцы в коротком и гибком синтаксисе для более быстрого развития. Он вдохновлен синтаксисом A [B] в R, где A - матрица, а B - матрица с двумя столбцами.

Где они пересекаются в «быстрой группировке», которую plyr также делает, разбивая data.frames, работая на куски и перестраивая их в единый data.frame. data.table имеет множество других функций, которые быстро выполняют операции над файлами данных. plyr имеет функции, которые применяют парадигму split-apply-comb к другим структурам данных, таким как списки и массивы (как входы, так и выходы).

Таким образом, это два разных инструмента, которые имеют небольшую область перекрытия, которые адресуют один и тот же проблемный домен, но каждый делает гораздо больше, чем это, и если вы хотите/нуждаетесь в дополнительной функциональности, то этот пакет должен использоваться.

+0

звучит так, будто вы говорите, что 'plyr' делает некоторые вещи, которые' data.table' не может - именно это я и ищу - можете ли вы привести пример или два? спасибо – eddi

+0

'library (" plyr "); example ("llply") 'Или действительно, любая из функций' ** ply', кроме 'ddply'. –

+0

'llply' для этой цели не кажется хорошим (насколько я вижу, это очень мало по сравнению с тем, что« lapply »уже делает), но другие делают, я посмотрю на эти функции и, возможно, воскресить этот вопрос после этого, пока это будет, спасибо – eddi

Смежные вопросы