2016-10-25 3 views
0

Ich bin neu hier und tauche in R, und ich stoße auf ein Problem beim Versuch, ein Rucksackproblem zu lösen.Gebe passende Namen anstelle von binären Variablen in R zurück

Für Optimierungszwecke habe ich ein dynamisches Programm in R geschrieben, aber jetzt, wo ich an dem Punkt bin, die Artikel zurückzugeben, was mir gelang, bekomme ich nur die Binärzahlen, ob der Artikel ausgewählt wurde oder nicht (1 = ja). Wie folgt aus:

auswählen [1] 1 0 0 1

Aber jetzt möchte ich die Funktion auswählen, die Namen von Werten anstelle dieser binären Werten zurückzukehren. Darunter habe ich ein Beispiel für mein Problem erstellt.

Dies wären die Daten und ein verwandter Datenrahmen.

items <- c("Glasses","gloves","shoes") 
grams <- c(4,2,3) 
value <- c(100,20,50) 


data <- data.frame(items,grams,value) 

Jetzt, habe ich verschiedene Funktionen, mit der endgültigen Klärung, ob ein Produkt wird von 1 (ja) oder 0 (nein) ausgewählt wurde. Wie oben. Allerdings möchte ich dafür den entsprechenden Namen des Artikels zurückgeben. Gibt es eine Möglichkeit, dies zu umgehen, indem man sich mit dem erstellten Datenrahmen verbindet? Damit es

Select [1] 1 1 1

Select [1] Brille Handschuhe Schuhe

Ich glaube, (alle Produkte werden ausgewählt, für den Fall) statt sagen würde Ich müsste eine neue Funktion erstellen. Aber wie gesagt, gibt es eine gute Möglichkeit, auf den Datenrahmen zurückzugreifen, um verwandte Werte aus einer anderen Spalte im Datenrahmen im Fall einer 1 (Ja) zu übernehmen?

Ich hoffe wirklich, meine Frage ist jetzt klarer und jemand kann mich in die richtige Richtung lenken.

Best, Berber

+3

Klingt wie ein Faktor wird gezwungen oder vielleicht sind Sie verwirrt über den Unterschied zwischen "(" und "[". MindReading-Geräte funktionieren im Moment jedoch nicht. Kann nicht sagen, was ohne vollständigen Code passiert. –

+0

Willkommen bei SO. Bitte lesen [this] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Schreiben Sie dann Ihre Frage neu, um diese Richtlinien zu erfüllen. – jlhoward

+0

Vielen Dank für Ihre Hilfe bis jetzt! Ich werde das machen. – Berber

Antwort

0

Lässt Ihre binären Vektor sagen

idx <- [1, 0, 1, 0, 1] 

verwenden nur,

items[as.logical(idx)] 

Sie für ausgewählte Elemente den Namen geben, und

items[!as.logical(idx)] 

wird Ihnen n geben ame für unselected items

Verwandte Themen