2017-01-27 56 views
-1

好吧,我可能正在追求完成这个的迂回路线,但是我有一个名为“goodAttributes”的列表和一个名为QTable的数据框。如果QTable列名是“goodAttributes”比我想返回该列的最大值,否则我要返回最小列...如果列名在R中的列表中,应用函数?

我检查如果QTable列名是在使用“grepl”列出“goodAttributes”,然后如果列表“goodAttributes”中的值为“真”,并且将列名称设置为“False”,并且重新命名QTable的列名称,并且调用新表格QTable2

称为“QTableB”当前数据帧:

enter image description here

现在,如果QTableB列名是“True”我要找到最大的那一列的,如果的列名QTableB是“False”我想返回该列的最小值......将结果存储在新的数据框中。要做到这一点

+1

编辑您的问题。 (不要使用注释。)将数据作为文本发布,然后显示您的代码。不是我的downvote。 (其他人看到了同样的问题,而且很懒惰。) –

回答

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的最小值。