como passar uma expressão através de uma função para a função de subconjunto para avaliar em R

Eu estou tentando escrever um método de subconjunto para uma classe de objeto diferente que eu gostaria que os usuários pudessem executar da mesma maneira que eles usam osubset.data.frame função. Eu li alguns artigos relacionados comoisto eisto, mas eu não acho que eles são a solução aqui. Eu acredito que estou usando o ambiente errado, mas eu não entendo o suficiente sobre os ambientes e também osubstitute função para descobrir por que a primeira metade deste código funciona, mas a segunda metade não funciona. Alguém poderia explicar o que estou fazendo de errado abaixo e, em seguida, como fazer um trabalholsubset função que poderia levargear == 4 como segundo parâmetro? desculpe se minhas pesquisas perderam uma pergunta semelhante .. obrigado !!

# create a list of mtcars data frames
mtlist <- list( mtcars , mtcars , mtcars )
# subset them all - this works
lapply( mtlist , subset , gear == 4 )


# create a function that simply replicates the task above
lsubset <- 
    function( x , sset ){
        lapply( x , subset , sset )
    }

# this does not work for some reason
lsubset( mtlist , gear == 4 )

questionAnswers(1)

yourAnswerToTheQuestion