> d <- data.table(x = 1:5)
> d[x == 6, y := get("i_9")]
Error in get("i_9") : object 'i_9' not found
> d[, y := 1] # add a new column y
> d[x == 6, y := get("i_9")]
<No Error>
get
из несуществующего столбца i_9
в:
а. несуществующий столбец y
не работает
б. существующий столбец y
выходит из строя тихо
Как мы оправдываем такое поведение.
Готово: github.com/Rdatatable/data.table/issues/4948. Спасибо, Оливер!
Для первой части см. свой (почти) повторяющийся вопрос здесь. По поводу последнего я бы спросил команду Rdatatable на github. Похоже, он ведет себя так же, как
tapply(numeric(), numeric(), get('i_9'))
, например. назначение по группам, и поскольку существует 0 групп, оно фактически не оценивается. Крайний случай, потому чтоy
существует (а не существует). Это похоже на «край» потенциально непреднамеренного поведения.