Я пытаюсь убедить S4-метод использовать выражение в качестве аргумента, но всегда получаю сообщение об ошибке. Тривиальный пример, который немного иллюстрирует то, что я пытаюсь сделать здесь:
setGeneric('myfun',function(x,y)standardGeneric('myfun'))
setMethod('myfun',c('data.frame','expression'),
function(x,y) transform(x,y) )
Если я сейчас попробую:
> myfun(iris,NewVar=Petal.Width*Petal.Length)
Error in myfun(iris, NewVar = Petal.Width * Petal.Length) :
unused argument(s) (NewVar = Petal.Width * Petal.Length)
> myfun(iris,{NewVar=Petal.Width*Petal.Length})
Error in myfun(iris, list(NewVar = Petal.Width * Petal.Length)) :
error in evaluating the argument 'y' in selecting a method for
function 'myfun': Error: object 'Petal.Width' not found
Кажется, что аргументы оцениваются в родовом уже, если я это правильно понимаю. Таким образом, передача выражений до методов кажется, по крайней мере, сложной. Есть ли возможность использовать методы отправки S4 с помощью выражений?
edit: изменено для преобразования, поскольку это лучший пример.