我想写一个不同的对象类的子集方法,我希望用户能够执行相同的方式,他们使用subset.data.frame
功能。我读过几篇相关文章,如this和this,但我不认为他们是这里的解决方案。我相信我使用的是错误的环境,但我对环境的了解不够充分,还有substitute
函数来弄清楚为什么这段代码的前半部分工作正常,但后半部分没有。任何人都可以解释我下面做错了什么,然后如何使lsubset
功能,可能需要gear == 4
作为其第二个参数?对不起,如果我的搜索错过了类似的问题..谢谢!如何通过一个函数来传递子集函数来评估R
# 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)
我看看[这里](http://stackoverflow.com/questions/9860090/in-r-why-is-better-than -subset)问题线程和[this one](http://stackoverflow.com/questions/12850141/programming-safe-version-of-subset-to-evaluate-its-condition-while-called-from/12850252#12850252 )。通常说,编程使用'subset'是一个坏主意,我想你会发现为什么! – Justin