data.table
- фантастический пакет R, и я использую его в библиотеке, которую я разрабатываю. Пока все идет хорошо, за исключением одного осложнения. Кажется, что гораздо сложнее (по сравнению с обычными кадрами данных) ссылаться на столбцы data.table
, используя имена, сохраненные в переменных (как для фреймов данных, например: colname="col"; df[df[,colname]<5,colname]=0
).
Возможно, что усложняет большинство из них - очевидное отсутствие согласованности синтаксиса на этом в data.table
. В некоторых случаях eval(colname)
и get(colname)
, или даже c(colname)
, похоже, работают. В других случаях решение DT[,colname, with=F]
является решением. Однако в других, например, в функциях set()
и subset()
, я вообще не нашел решения. Наконец, был рассмотрен крайний, хотя и довольно распространенный случай использования (передача имен столбцов в программный файл data.table), и предлагаемые решения, хотя и явно выполняющие свою работу, не кажутся особенно читаемыми...
Возможно, я слишком много усложняю? Если бы кто-нибудь мог наброситься на быстрый чек-лист, ссылаясь на имена столбцов data.table
, используя переменные для разных распространенных сценариев, я был бы очень благодарен.
UPDATE:
Некоторые конкретные примеры, которые работают, могут содержать имена столбцов жесткого кода:
x.short = subset(x, abs(dist)<=100)
set(x, which(x$val<10), "val", 0)
Теперь предположим distcol="dist"
, valcol="val"
. Каков наилучший способ сделать это, используя distcol
и valcol
, но не dist
и val
?