Sto leggendo la sezione Advanced R di Hadley Wickham sulla coercizione, e non riesco a capire la risposta a questa domanda. Suppongo che R costringa 2 a un personaggio, ma non capisco perché R restituisce FALSE invece di restituire un errore. (Questo mi rende particolarmente strano dal momento che -1 "<" uno "restituisce VERO). Quindi la mia domanda è duplice: in primo luogo, perché questa risposta, e in secondo luogo, c'è un modo per vedere come R converte i singoli elementi all'interno di un vettore logico come questi esempi?Perché "one" <2 ... FALSE in R?
risposta
Da help("<")
:
Se i due argomenti sono vettori atomiche di tipo diverso, uno è forzato al tipo dell'altro, l'ordine di precedenza (decrescente) essendo carattere, complesso, numerico, intero, logico e grezzo.
Quindi in questo caso, il numerico ha una precedenza inferiore rispetto al carattere. Quindi 2
è forzato al carattere "2"
. Il confronto di stringhe nei vettori di caratteri è lessicografico che, a quanto ho capito, è alfabetico ma dipendente dal locale.
Converte 2 in un carattere, quindi esegue un confronto alfabetico. E caratteri numerici sono assunti a venire prima di quelli alfabetici
per avere un'idea generale sul comportamento provare
'a'<'1'
'1'<'.'
'b'<'B'
'a'<'B'
'A'<'B'
'C'<'B'
Mi chiedo se ci sia un generale (cioè universale attraverso le impostazioni locali) che i numeri vengano prima dei caratteri alfabetici nell'ordine di confronto? –
Grazie. questo e quello di jdharrison poiché entrambi hanno ragione, ma sembra che io possa segnarne solo uno in quel modo. – JoeF
- 1. Perché False == False in [False] restituisce True?
- 2. Doctrine 2 One-To-One rapporto unidirezionale eliminare lato
- 3. Codifica One-Hot in [R] | Variabili categoriali a variabili fittizie
- 4. Perché 0 == [], ma 0 == false e! [] == false?
- 5. Perché {} == false valutare su false while [] == false restituisce true?
- 6. '<uniqueVersion> false</ uniqueVersion>' at maven 3
- 7. ModelState.IsValid == false, perché?
- 8. Perché String.Equals restituisce false?
- 9. Aggiornamento pacchetti in R - impatto di checkBuilt = TRUE o FALSE
- 10. Symfony relazione ONE-TO-ONE
- 11. Perché Integer.respond_to? (: Even?) Restituisce false?
- 12. isalpha (<mychar>) == true restituisce false?
- 13. Perché 2 /// 2 è 2 in Javascript?
- 14. Cosa significano ..1 e ..2 in R?
- 15. Mappatura one-to-one facoltativa in Hibernate
- 16. Relazione One to One in MySQL
- 17. scopo per <pages enableEventValidation = "false">
- 18. 1 == 0 in (0,1) è False; perché?
- 19. Perché [] === [] (e altri) restituiscono false in javascript?
- 20. JSF: Perché prependId = false in un modulo?
- 21. Perché `$ (document) === $ (document)` restituisce false in jQuery?
- 22. Perché $ ((true == false)) valuta 1 in bash?
- 23. Perché ValidateInput (False) non funziona?
- 24. Thunderdome MVC- Perché one-model-in in MVC?
- 25. Perché bool (xml.etree.ElementTree.Element) restituisce False?
- 26. Perché contare (false) restituire 1?
- 27. Perché (null == false) e (null == true) entrambi restituiscono false?
- 28. Perché "[] == False" restituisce False quando "se non []" ha esito positivo?
- 29. nibernetico fluente one-to-one?
- 30. permanentemente stabilito di goccia FALSE operatori vettoriali in R
suggerimento: 'sort (c (" uno "," 2 "," - 1 "," 10 "))' (il 10 non è necessario ma potrebbe darvi un altro esempio per meditare: '" 10 "<" 2 "') –
questo tipo di stranezze appaiono in tutti i linguaggi di programmazione, cerca di occuparti sempre del tipo di dati con cui stai lavorando e confronta le mele con le mele e le arance con le arance. –
La coercizione è diffusa in R. È un linguaggio debolmente tipizzato. Se non ti piace questa funzione, quindi utilizzare Java. Quando si guardano i caratteri con "<", inizialmente è un confronto dell'ordine di confronto specifico della locale del primo carattere al primo carattere. Guarda: ..... ''\ t9999' <" 00000 "' –