如何通过函数传递表达式,以便在R中计算子集函数

时间:2013-07-01 15:13:09

标签: r subset

我正在尝试为不同的对象类编写一个子集方法,我希望用户能够以与使用subset.data.frame函数相同的方式执行。我已经阅读了一些相关的文章,如thisthis,但我不认为它们是解决方案。我相信我使用的是错误的环境,但是我对环境以及substitute函数不够了解,无法弄清楚为什么这段代码的前半部分有效,但后半部分没有。任何人都可以在下面解释我做错了什么,然后如何制作一个可以将lsubset作为第二个参数的gear == 4函数?对不起,如果我的搜索错过了类似的问题..谢谢!!

# 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 )

1 个答案:

答案 0 :(得分:5)

怎么样:

lsubset <- 
    function( x , ... ){
        lapply( x , subset , ... )
    }

lsubset( mtlist , gear == 4 )