Ответ 1
Хорошо заметили: это новая ошибка. Пожалуйста, напишите файл bug.report(package="data.table")
.
Спасибо.
===
Теперь исправлено в v1.8.3. Ошибка # 2215 и последние новости.
мой вопрос является расширением ранее упомянутого здесь:
Добавить несколько столбцов в 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
Хорошо заметили: это новая ошибка. Пожалуйста, напишите файл bug.report(package="data.table")
.
Спасибо.
===
Теперь исправлено в v1.8.3. Ошибка # 2215 и последние новости.