通过函数将子集参数传递给子集 [英] Pass subset argument through a function to subset
本文介绍了通过函数将子集参数传递给子集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想要一个函数,它调用 subset
,并传递一个 subset
参数:
I would like to have a function which calls subset
, and passes on a subset
argument:
df <- data.frame(abc=c("A","A","B","B"),value=1:4)
subset(df,abc=="A")
## works of course:
# abc value
#1 A 1
#2 A 2
mysubset <- function(df,ssubset)
subset(df,ssubset)
mysubset(df,abc=="A")
## Throws an error
# Error in eval(expr, envir, enclos) : object 'abc' not found
mysubset2 <- function(df,ssubset)
subset(df,eval(ssubset))
mysubset2(df,expression(abc=="A"))
## Works, but needs expression
我尝试使用 substitute
,但无法找到正确的组合.我怎样才能让它工作?
I tried with substitute
, but was not able to find the right combination. How can I get this working?
推荐答案
A5C1D2H2I1M1N2O1R2T1 答案有效,但您可以通过简单地使用以下方法跳过整个解析/解析周期:
The A5C1D2H2I1M1N2O1R2T1 answer works, but you can skip the whole deparse/parse cycle by simply using:
mysubset <- function(df, p) {
ps <- substitute(p)
subset(df, eval(ps))
}
这篇关于通过函数将子集参数传递给子集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文