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

时间:2017-01-27 18:33:17

标签: r dataframe grepl

好吧,我可能正在寻求一种实现这一目标的迂回方式,但我有一个名为“goodAttributes”的列表和一个名为QTable的数据框。如果列名QTable在“goodAttributes”中,而不是我想返回该列的最大值,否则我想返回列的最小值...

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

当前DataFrame名为“QTableB”:

enter image description here

现在,如果True的列名是“QTableB”,我想找到该列的最大值,并且False的列名是“{{1} “我想返回该列的最小值...将结果存储在新的数据框中。

1 个答案:

答案 0 :(得分:0)

这样做的一种方法是简单地将一个函数应用于框架的所有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的最小值。