如果列名在 R 的列表中,则应用函数?

Apply a function if column name is in a list in R?

好吧,我可能正在寻求一种迂回的方式来完成这个,但我有一个名为“goodAttributes”的列表和一个名为 QTable 的数据框。如果 QTable 的列名在“goodAttributes”中,那么我想 return 该列的最大值,否则我想 return 该列的最小值。 .

我使用“grepl”检查了 QTable 的列名是否在列表“goodAttributes”中,如果值在列表“goodAttributes”中为 "True",否则将列名称设置为“False”,并调用新的 table QTable2.

当前调用的 DataFrame "QTableB":

现在,如果 QTableB 的列名是“True”,我想找到该列的最大值,如果 QTableB 的列名是“False" 我想 return 该列的最小值...将结果存储在新的数据框中。

实现此目的的一种方法是简单地将函数应用于框架的所有 colnames

QTable  <- data.frame(v1=1:10,v2=11:20,v3=31:40)
goodAttributes <- c("v1","v3")

sapply(colnames(QTable),function(c){
  if(c %in% goodAttributes) max(QTable[,c])
  else min(QTable[,c])})

产生

v1 v2 v3 
10 11 40

即v1 和 v3 的最大值(goodAttributes 中的列名)和 v2.

的最小值