Wie filtere ich NaNs heraus, wenn ich Floats in Ruby vergleiche?

Dave

Ich verwende Rails 5 mit Ruby 2.4. Wie kann ich feststellen, ob eine Variable eine Zahl ist? Ich dachte, is_a? (Numerisch) wäre der richtige Weg, aber anscheinend nicht bei mir. Ich habe diesen Code

      puts "guesses arr: #{guesses_arr}"
      guesses_arr.map!{|str| str.is_a?(Numeric) && str == guesses_arr.max ? str : 0}

die mit stirbt

guesses arr: [NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]
ArgumentError: comparison of Float with NaN failed
    from /Users/davea/Documents/workspace/myproject/app/services/text_table_to_race_time_converter_service.rb:2121:in `max'
    from /Users/davea/Documents/workspace/myproject/app/services/text_table_to_race_time_converter_service.rb:2121:in `block (2 levels) in guess_headers_from_data_cols'
    from /Users/davea/Documents/workspace/myproject/app/services/text_table_to_race_time_converter_service.rb:2121:in `map!'

Ich kann dies nicht in einer Konsole reproduzieren, da ich anscheinend kein Array mit all diesen "NaN" -Werten erzeugen kann. Der Punkt ist, wie stelle ich sicher, dass diese in meiner Schleife nicht verglichen werden?

Zitate

Sie können ein Array von NaNWerten in der Konsole wie folgt erstellen :

[ 0.0 / 0.0 ] * 3
# => [NaN, NaN, NaN]

Es ist nicht ganz klar, was Ihr Code macht, aber es ist vielleicht erwähnenswert, dass maxdie Ausnahme die Ausnahme auslöst und nicht der Gleichheitstest. Übrigens, wenn Sie versuchen, jeden Array-Wert mit dem Maximalwert zu vergleichen, möchten Sie möglicherweise maxaußerhalb von map, um ihn nicht mehrmals bewerten zu müssen.

Aufbauend auf der anderen Antwort hier auf das Ablehnen von NaNs können Sie alles zusammenfügen, um so etwas zu erhalten:

# set up dummy data - 2 values and 3 NaNs
guesses_arr = [ 0.0 / 0.0 ] * 3 + [ 2.0, 3.0 ]
puts "guesses arr: #{guesses_arr}"
# => [NaN, NaN, NaN, 2.0, 3.0]

# remove NaNs in place
guesses_arr.reject!(&:nan?)
maximum = guesses_arr.max
guesses_arr.map!{|str| str.is_a?(Numeric) && str == maximum ? str : 0}
# => [ 0, 3.0 ]

Bearbeiten: Wenn Sie Ganzzahlen im Array verwechseln, versuchen Sie, sie zuerst in Floats umzuwandeln:

# set up dummy data - including floats and integers
guesses_arr = [ 0.0 / 0.0 ] * 3 + [ 2.0, 3.0, 0 ]
guesses_arr.map!(&:to_f).reject!(&:nan?)
# => [ 2.0, 3.0, 0.0 ]

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Wie filtere ich Knoten mit rvest heraus?

Wie filtere ich 2 IDs in c # heraus?

Wie filtere ich Untergruppen in DSQUERY heraus?

Wie filtere ich äquivalente Wertelisten in Python heraus?

Wie filtere ich leere Objekte in Typescript heraus?

Wie filtere ich die Duplikate heraus?

Wie filtere ich Spalten heraus, wenn ich den Codegenerator von Slick verwende?

Wie filtere ich Daten in Excel, indem ich Paare in Spalten vergleiche?

Wie filtere ich Getter und Setter heraus, wenn die Konsole Vuejs Daten protokolliert?

Wie filtere ich Zahlen aus einer Zeichenfolge heraus, wenn sie mit der Vorlage übereinstimmt?

Wie filtere ich alle VMs unter einem Netzwerksegment in vcenter mit Ruby heraus?

Wie filtere ich Teilnehmer mit einer schlechten Punktzahl heraus?

Wie filtere ich Textfelder in einer komplexen Abfrage heraus?

Sharepoint CSOM - Wie filtere ich System- / Standarddokumentbibliotheken heraus?

Wie filtere ich das Wiederholungselement aus JS Array heraus?

Wie filtere ich Werte aus pyspark.rdd.PipelinedRDD heraus?

Wie filtere ich "Nothing" -Werte aus Elm Array heraus?

Wie filtere ich Listenelemente aus zwei großen Listen heraus?

Wie filtere ich Mausklick-Release-Ereignisse heraus?

Wie filtere ich Nullwerte mit einem Angular Pipe heraus?

Wie filtere ich Objekte in einem Array im Winkel heraus?

Wie filtere ich Dateien nach Erweiterung in NERDTree heraus?

Wie filtere ich einen Schlüssel aus einem Objekt heraus?

Wie filtere ich Zeilen basierend auf vorherigen aufeinanderfolgenden Zeilen heraus?

Wie filtere ich bestimmte Ereignisse aus Verhaltensflussberichten in Google Analytics heraus?

Wie filtere ich Dateien mit mehreren Kriterien in einem Makefile heraus?

Wie filtere ich Zeilen mit NaN-Werten in Hive heraus?

Wie filtere ich eine Liste nach Mehrheit in Python heraus?

Wie filtere ich einen bestimmten Wert in VBA heraus?

TOP Liste

  1. 1

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  2. 2

    Eclipse Oxygen - Projekte verschwinden

  3. 3

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  4. 4

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  5. 5

    Wie kann ich den Kaskadenmodus global einstellen?

  6. 6

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  7. 7

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  8. 8

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  9. 9

    Modbus Python Schneider PM5300

  10. 10

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  11. 11

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  12. 12

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  13. 13

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  14. 14

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  15. 15

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  16. 16

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

  17. 17

    ElasticSeach Auto Complete mit dem Vervollständigungsvorschlag, um das vollständige Dokument zurückzugeben

  18. 18

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  19. 19

    Wie wählt man Unterschiede mit drei Tabellen aus?

  20. 20

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  21. 21

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

heißlabel

Archiv