在 R 中从 class "call" 的对象中查找匹配项

Finding matches from an object of class "call" in R

鉴于 函数调用 对象 a,我想知道如何找到 n 的实例对于 controlTF,如何知道每种情况下 long 的值是多少?

例如,在下面的例子中,我希望 subset 31 32 35 as ns for哪个控件是 T30 33 34 作为 n 哪个控件是 F.

long也是如此。换句话说,我正在寻找 call 对象的子集策略?

foo <- function(n , long, control, ...){

 match.call()
}

# Example:
a <- foo(n = 30:35, long = c(1, 2, 2, 3, 1,1), control = c(F, T, T, F, F, T))

如果我们需要从'a'

中获取值
lst1 <- as.list(a)
eval(lst1$n)[eval(lst1$control)]
#[1] 31 32 35
eval(lst1$n)[eval(lst1$control) & eval(lst1$long)==1]
#[1] 35