У меня есть простой DT, и я хотел бы добавить столбец к остальным.Код выглядит следующим образом: (работает)
x <- data.table(a=1:5,b=5:1,c=rep(999,5))
for(k in c("a","b")){x[,k] <- x[,..k]+x[,.(c)]}
Теперь возникает вопрос: почему я должен использовать ..
для назначения?Также, если я пытаюсь использовать ..
в первом случае, то есть
for(k in c("a","b")){x[,..k] <- x[,..k]+x[,.(c)]}
Ошибка: «[...] объект '..k' не найден».Это кажется странным, что мне нужно изменить синтаксис внутри области действия.
Теперь в dataframe
эквивалентная формулировка очень ясна:
for(k in c("a","b")){x[,k] <- x[,k]+x[,c]} # error with DT
x <- data.frame(a=1:5,b=5:1,c=rep(999,5))
for(k in c("a","b")){x[,k] <- x[,k]+x[,"c"]} # works with dataframe
Так что мне интересно (1)если приведенный выше код является правильным способом сделать это в datatable
(пожалуйста, объясните оператор ..
, в FAQ 1.1 по датированным данным это конкретно не рассматривается);и если (2) есть альтернативные способы написать это более чистым способом.Спасибо за любые подсказки.