Обращение к столбцам data.table по именам, сохраненным в переменных
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
Имена столбцов, использующие переменные для разных распространенных сценариев, были бы очень благодарны.
ОБНОВИТЬ:
Некоторые конкретные примеры, которые работают, если я могу жестко кодировать имена столбцов
x.short = subset(x, abs(dist)<=100)
set(x, which(x$val<10), "val", 0)
Теперь предположимdistcol="dist"
, valcol="val"
, Каков наилучший способ сделать выше, используяdistcol
а такжеvalcol
, но нетdist
а такжеval
?