Добавьте несколько столбцов в подмножество data.table с: =

мой вопрос является расширением ранее упомянутого здесь:

Добавить несколько столбцов в R data.table в одном вызове функции?

У меня возникают проблемы с назначением нескольких новых столбцов, если на таблице данных .title есть ключ, по которому я подмножу. Пример:

library(data.table)
example(data.table)
DT[J("a")]
   x y  v  m
1: a 1 42 42
2: a 3 42 42
3: a 6 42 42

то есть. DT имеет key(DT) = c("x", "y"), и я хочу назначить 2 новых столбца new1 и new2 в одном вызове, аналогично приведенному выше решению. Я делаю это:

DT[J("a"),c("new1","new2") := list(c(1,2,3),c(3,2,1)),with=FALSE]

но я понимаю, что

   x y  v  m new1
1: a 1 42 42    1
2: a 3 42 42    2
3: a 6 42 42    3
4: b 1  4  5   NA
5: b 3  5  5   NA
6: b 6  6  5   NA
7: c 1  7  8   NA
8: c 3  8  8   NA
9: c 6  9  8   NA

то есть. поведение (как и ожидалось) (присваивать значения где x == a, NA else), но только для первого столбца. Это моя ошибка или это ошибка?

Обратите внимание, что без подмножества DT это отлично работает:

DT[,c("new1","new2") := list(c(1,2,3),c(3,2,1)),with=FALSE]
   x y  v  m new1 new2
1: a 1 42 42    1    3
2: a 3 42 42    2    2
3: a 6 42 42    3    1
4: b 1  4  5    1    3
5: b 3  5  5    2    2
6: b 6  6  5    3    1
7: c 1  7  8    1    3
8: c 3  8  8    2    2
9: c 6  9  8    3    1

Ответы

Ответ 1

Хорошо заметили: это новая ошибка. Пожалуйста, напишите файл bug.report(package="data.table").

Спасибо.

===

Теперь исправлено в v1.8.3. Ошибка # 2215 и последние новости.