Передача функций в R с синтаксисом f (myclass.myfun c) - PullRequest
2 голосов
/ 11 апреля 2020

Я новичок в R. Я погуглил мою проблему, но не нашел ничего, касающегося именно того, что я ищу. Я знаю, что вы можете передавать функции в другие функции, но я бы хотел передать переменную, подобную «объекту», в функцию с другими функциями, связанными с «объектом». Вот что я имею в виду

model1.calculation1 = function() {
    print( "model1.calculation1" )
}
model2.caclulation1 = function() {
    print( "model2.calculation2" ) 
}

runModel = function( model ) {
    model.calculation1() 
}
runModel( model1 )
runModel( model2 )

и сообщение об ошибке:

Error in model.calculation1() : 
  could not find function "model.calculation1"

Примечание. Я ничего не делаю для создания экземпляров model1 или model2 перед привязкой к ним функции. Есть ли способ сделать это? Спасибо!

1 Ответ

3 голосов
/ 11 апреля 2020

Я думаю, что вы ищете substitute.

runModel = function( model ) {
  s <- substitute(model)
  if(s=="model1")
    model1.calculation1() 
  else
    model2.calculation1() 
}

runModel( model1 )
# [1] "model1.calculation1"

runModel( model2 )
# [1] "model2.calculation2"

model1 <- lm(mpg~hp, data=mtcars)
model2 <- lm(mpg~hp+am, data=mtcars)
...