получить имена цитируемого списка без оценки

у меня есть цитируемый список

quote(list(orders = .N,
           total_quantity = sum(quantity)))

(что я в конце концов eval в j части data.table)

Я хотел бы извлечь names из этого списка без необходимости оценивать выражение, потому что за пределами правильной среды оценка выражения приведет к ошибке.


person RoyalTS    schedule 03.05.2017    source источник


Ответы (1)


На данный момент в списке нет имен. Это даже не список. Это вызов функции list(). Но при этом вы можете проанализировать этот вызов функции и извлечь параметр имени. Например

x <- quote(list(orders = .N,
    total_quantity = sum(quantity)))
names(as.list(x))[-1]
# [1] "orders"         "total_quantity"

Этот as.list() в выражении превращает вызов функции в (именованный) список без оценки.

person MrFlick    schedule 03.05.2017
comment
А если только names(x)[-1]? Что для меня странно, так как attributes(x) возвращает NULL. - person Rich Scriven; 04.05.2017
comment
Хороший вопрос @RichScriven. Где-то должно быть какое-то принуждение, но я не могу его найти. Отсутствие атрибута name интересно. - person MrFlick; 04.05.2017