Как в R получить всю командную строку в sys.call ()бинарного оператора?

Я написал бинарную операторную функцию для R (, т.е. с именем вроде %X%, чтобы вместо ввода %X%(a,b)я мог использовать более удобный синтаксис a %X% b. Моя цель состоит в том, чтобы иметь оболочку для <-, которая делает такие вещи, как журнал того, что было сделано с объектами в этой среде, и проверяет наличие «защищенного» атрибута, который предупреждал бы пользователя перед перезаписью этого объекта.

Все это работает, за исключением того, что если я попытаюсь сделать что-то вроде a %X% b + cвнутри функции, все, что вы увидите, этоa %X% b_и это все, что он делает; a получает значение b, а c полностью игнорируется. a %X% (b + c)работает, как и %X%(a, b + c), но весь смысл написания этого как бинарного оператора состоит в том, чтобы избежать круглых скобок.

Если я перезапишу <-, его sys.call()увидит все слева и справа от него. Почему мой видит только соседние имена из командной строки?

Вот код, который воспроизводит эту проблему:

`%X%` <- function(...){
    print(deparse(sys.call()));
}

a %X% 3 + 1:10;

Желаемый результат: "%X% 3 + 1 :10" Наблюдаемый результат: "%X% 3"

. Спасибо.

6
задан bokov 5 August 2012 в 02:50
поделиться