ОБНОВЛЕНИЕ : Старый вопрос .. . это было разрешено с помощью data.table v1.5.3 в феврале 2011 года.
Я пытаюсь использовать пакет data.table
, и мне очень нравится ускорение, которое я получаю, но это меня озадачивает. ошибка, когда я делаю x [y,
, где x
и y
- это «таблицы данных» с тем же ключом, а
Чтобы прояснить функциональность, которую я ищу в приведенном выше примере: Мне нужно сделать эквивалент следующего:
with(merge(x,y), foo*boo)
Однако, согласно приведенному ниже отрывку из data.table
FAQ, это должно было сработать:
Наконец, хотя кажется, что x [y] не возвращает столбцы в y, вы можете использовать столбцы из y в выражении j. Это то, что мы означает объединение унаследованной области. Почему бы нет просто верните объединение всех столбцы из x и y, а затем запустить выражения на что? Это сводится к эффективность кода и что быстрее программировать. Когда ты пишешь x [y, foo boo], data.table автоматически проверяет выражение j, чтобы увидеть, какое столбцы, которые он использует. Это будет только подмножество, или сгруппировать, только эти столбцы. объем памяти создается только для столбцов j использует. Скажем, foo находится в x, а boo находится в y (вместе с 20 другими столбцами в у). Разве x [y, foo boo] быстрее программа и запускается быстрее, чем шаг слияния, за которым следует другое подмножество step?
Мне известен этот вопрос , в котором рассматривается аналогичная проблема, но, похоже, он не был решен удовлетворительно. Кто-нибудь знает, что мне не хватает или недопонимание? Спасибо.
ОБНОВЛЕНИЕ: Я спросил о списке рассылки справки по таблице данных, и автор пакета (Мэтью Доул) ответил , что на самом деле приведенный выше FAQ неверен, поэтому синтаксис, который я использую, не будет работать в настоящее время, т.е. я не могу ссылаться на столбцы y
в j
(т.е. второй) аргумент, когда я использую x [y, ...]
.