Я пытаюсь убедить метод 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: изменено на преобразование, поскольку это лучший пример.