2017-01-27 93 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的最小值。