Ich lese Hadley Wickhams Advanced R Abschnitt über Zwang, und ich kann die Antwort auf diese Frage nicht herausfinden. Ich nehme an, dass R 2 zu einem Zeichen zwingt, aber ich verstehe nicht, warum R FALSE zurückgibt, anstatt einen Fehler zurückzugeben. (Das ist mir besonders rätselhaft seit -1 < "Eins" gibt TRUE zurück). Also meine Frage ist zweifach: erstens, warum diese Antwort, und zweitens, gibt es eine Möglichkeit zu sehen, wie R die einzelnen Elemente in einem logischen Vektor wie diese Beispiele umwandelt?Warum ist "eins" <2 ... FALSCH in R?
Antwort
Von help("<")
:
Wenn die beiden Argumente Atom Vektoren verschiedenen Typen sind, eine ist gezwungen, um den Typ der anderen, die (abnehmende) Reihenfolge der Priorität wird Zeichen, komplexe, numerische, ganze, logische und rohe.
In diesem Fall hat der numerische Wert eine niedrigere Priorität als das Zeichen. So wird 2
zum Zeichen "2"
gezwungen. Der Vergleich von Strings in Zeichenvektoren ist lexikographisch, das, wie ich es verstehe, alphabetisch, aber ortsabhängig ist.
Erzwingt 2 in ein Zeichen, dann führt es einen alphabetischen Vergleich. Und numerische Zeichen vor alphabetisch diejenigen kommen angenommen
eine allgemeine Idee auf dem Verhalten zu bekommen versuchen
'a'<'1'
'1'<'.'
'b'<'B'
'a'<'B'
'A'<'B'
'C'<'B'
ich frage mich, ob eine allgemeine (dh universal über locales) Garantie gibt es, dass vor alphabetischen Zeichen in der Sortierreihenfolge kommen Zahlen? –
Danke. ich würde markieren diese und die von jdharrison, da beide richtig sind, aber es scheint, ich kann nur einen von ihnen auf diese Weise markieren. – JoeF
- 1. -2 <1 = falsch. Warum?
- 2. Warum falsch == "falsch" ist falsch?
- 3. Warum ist document.all falsch?
- 4. Ruhezustand: Eins-zu-Eins-Lazy-Laden, optional = Falsch
- 5. Warum gibt {1, 2, 3} <{2, 3, 4, 5} Falsch zurück?
- 6. Warum ist meine Tabellenzellenbreite in Chrome falsch?
- 7. Warum Ausgabe von cout << setprecision (2) << 0.999 ist 1 statt 1.0?
- 8. Warum {} == {} ist falsch, aber {} + {} == {} + {} gilt
- 9. Warum isLockTaskPermitted Flag ist falsch
- 10. Warum ist Geopy Distance.Distance falsch?
- 11. Warum ist mein Subtraktionsergebnis falsch?
- 12. ! 0 ist falsch in Schienen. Warum?
- 13. Warum ist '0' in Perl falsch?
- 14. Warum ist "1.0 == 1.0" in Ocaml falsch?
- 15. 1 == 0 in (0,1) ist falsch; Warum?
- 16. Symfony 2 viele zu eins
- 17. Warum ist ein Vektor der Länge eins anfangs bei NAM (2)?
- 18. Warum ist jQuery.length == 2?
- 19. Warum ist das falsch inline wenn?
- 20. javascript: warum der Rückgabewert ist möglicherweise falsch
- 21. Ist `<<` `pow (2, n)` in python 3?
- 22. Warum ist das Substraktionsergebnis falsch? Montage x86
- 23. Transform [: eins, 1,: zwei, 2] zu {: eins => 1,: zwei => 2} in Ruby
- 24. Warum ist die Verwendung von Stream :: flatMap falsch?
- 25. Doktrin 2 - Eins-zu-eins Generiere automatisch leere Zeilen
- 26. wahr in Mathe, falsch in R
- 27. Hibernate - Warum verwenden Sie eins zu eins, um eins zu eins darzustellen?
- 28. Warum ist die Anzahl der betroffenen Zeilen falsch?
- 29. Warum ist dieses SQL falsch (MySQL)?
- 30. Warum ist diese Fremdschlüsseleinschränkung falsch gebildet?
Hinweis: 'sort (c (" eins "," 2 "," - 1 "," 10 "))' (die 10 ist nicht notwendig, aber könnte Ihnen ein anderes Beispiel geben, um zu überlegen: '" 10 "<" 2 "') –
Diese Art von Macken erscheinen in allen Programmiersprachen, versuchen Sie immer auf den Datentyp zu achten, mit dem Sie arbeiten und vergleichen Sie Äpfel mit Äpfeln und Orangen mit Orangen. –
Zwang ist in R weit verbreitet. Es ist eine schwach typisierte Sprache. Wenn Ihnen diese Funktion nicht gefällt, verwenden Sie Java. Wenn Sie sich Zeichen mit "<" ansehen, handelt es sich zunächst um einen Vergleich der länderspezifischen Sortierreihenfolge des ersten Zeichens mit dem ersten Zeichen. Schau dir an: ..... ''\ t9999' <" 00000 "' –