R: При использовании data.table как мне получить столбцы y, когда я сделаю x [y]?

ОБНОВЛЕНИЕ : Старый вопрос .. . это было разрешено с помощью 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, ...] .

14
задан Community 23 May 2017 в 12:14
поделиться