R-使用变量传递从数据帧中选择的列筛选条件

R-使用变量传递从数据帧中选择的列筛选条件,r,R,我尝试使用一个变量,该变量可以包含动态生成的列筛选条件,以从数据帧中生成子集。 这是一种情况: 1) 数据是具有列的数据框,如图所示 Symbol Yield PE DivGrowth 1 ABBV 3.46 18.80 5.00 2 ABM 2.24 21.18 3.33 3 ABT 2.26 23.65 10.85 4 ADM 1.91 22.29 9.08 5 ADP 2.

我尝试使用一个变量,该变量可以包含动态生成的列筛选条件,以从数据帧中生成子集。 这是一种情况: 1) 数据是具有列的数据框,如图所示

   Symbol Yield    PE DivGrowth  
1    ABBV  3.46 18.80      5.00  
2     ABM  2.24 21.18      3.33  
3     ABT  2.26 23.65     10.85  
4     ADM  1.91 22.29      9.08  
5     ADP  2.46 25.83      8.57  
6     AFL  2.25  9.26      5.97  
7     ALB  1.44 13.53     13.15  
8    ANDE  1.02 19.59      5.74  
9     AOS  1.29 25.11      9.99  
10    APD  2.41 25.08      2.53  
11   ARLP  5.50 11.69      1.99  
12   AROW  3.83 14.68      1.01  
13  ARTNA  3.67 23.91      3.20  
14   ATNI  1.68  3.14      7.50  
15    ATO  2.97 18.59      1.72  
2) 我可以在函数调用本身中使用条件进行子集,例如

subset(data, PE <= 12 & Yield >=2.98)  

   Symbol Yield    PE DivGrowth  
11   ARLP   5.5 11.69      1.99  
5) 我试过这个序列,它是有效的

ss<-expression(PE <= 12 & Yield >=2.98)  
subset(data, eval(ss))  
ss怎么样:

target.yield <- 2.98
target.PE <- 12
subset(data, PE <= target.PE & Yield >= target.yield)

target.yield如果我正确理解您的问题,您希望动态编辑子集。您可能要尝试:

update_set <- function(PE, threshold, data, ...) {
    CONDITIONS <- expression(PE <= threshold)
    data[which(CONDITIONS),] # allows only the TRUE conditions, 
                             # will return your data object
}

update\u set Thanx将起作用,但我还希望有可变数量的列可供选择。如果不使用colX say,我想可以只说colX>=0来选择我猜的所有列。Thanx-我还需要包括或排除列-ao我必须提供正确的表达式。您可以使用第二个表达式并将其插入列空间,即[(stuff),(此处)]。在这一点上,我可能会为这些更复杂的子集例程推荐package data.table。问题仍然是,我无法在某种向量中设置可变数量的列并将其传递。实际上,大约有20个不同的列,我想使用6个、8个或其他。所有的解决方案都迫使我在函数调用参数中指定列名,我一直在寻找解决方法。
target.yield <- 2.98
target.PE <- 12
subset(data, PE <= target.PE & Yield >= target.yield)
update_set <- function(PE, threshold, data, ...) {
    CONDITIONS <- expression(PE <= threshold)
    data[which(CONDITIONS),] # allows only the TRUE conditions, 
                             # will return your data object
}