2017-01-27 1 views
-1

Okay, ich verfolge wahrscheinlich einen Umweg, um das zu erreichen, aber ich hatte eine Liste namens "goodAttributes" und einen Datenrahmen namens QTable. Wenn ein Spaltenname von QTable ist in „goodAttributes“ als ich den max diesen Spalte zurückkehren möchte, andernfalls ich das Minimum der Spalte zurückkehren will ...Eine Funktion anwenden, wenn der Spaltenname in einer Liste in R steht?

überprüfte ich, wenn der Spaltenname von QTable in der war Liste "goodAttributes" mit "grepl" und dann die Spaltennamen QTable zurücksetzen, wenn der Wert in der Liste "goodAttributes" als "True" und sonst den Spaltennamen als "False", und nannte die neue Tabelle QTable2.

Aktuelle Datenrahmen „QTableB“ genannt:

enter image description here

Jetzt will wenn der Spaltenname von QTableB ist „True“ Ich habe das Maximum dieser Spalte zu finden, und wenn der Spaltennamen von QTableB ist "False" Ich möchte das Minimum dieser Spalte zurückgeben ... Speichern der Ergebnisse in einem neuen Datenrahmen.

+1

Bearbeiten Sie Ihre Frage. (Verwenden Sie keine Kommentare.) Veröffentlichen Sie Daten als Text und zeigen Sie dann Ihren Code an. Nicht mein Downvote. (Jemand anderes sah die gleichen Probleme und war faul.) –

Antwort

0

Eine Möglichkeit, dies zu tun, ist einfach eine Funktion, um alle der colnames des Rahmens gelten:

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])}) 

die

v1 v2 v3 
10 11 40 

dh die max von v1 und v3 (die Spalte ergibt Namen in goodAttributes) und die min von v2.

Verwandte Themen