[英]Pass subset argument through a function to subset
我想有一個調用subset
的函數,並傳遞一個subset
參數:
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
,但無法找到合適的組合。 我怎樣才能使這個工作?
你也需要eval()
和parse()
:
mysubset <- function(df, ssubset) {
subset(df, eval(parse(text=ssubset)))
}
mysubset(df, "abc=='A'")
# abc value
# 1 A 1
# 2 A 2
請注意,您需要嵌套引號,因此必要時在"
和'
之間來回切換。
根據您的評論,也許這樣的事情也是有趣的:
mysubset <- function(df, ...) {
ssubset <- deparse(substitute(...))
subset(df, eval(parse(text = ssubset)))
}
用法: mysubset(df, abc=='A')
A5C1D2H2I1M1N2O1R2T1答案有效,但您只需使用以下命令即可跳過整個解析/解析周期:
mysubset <- function(df, p) {
ps <- substitute(p)
subset(df, eval(ps))
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.