Voglio mettere la condizione di arresto all'interno di una funzione. La condizione è che se il primo e il secondo elemento dovessero combaciare perfettamente in ordine e lunghezza.Confronto di due vettori in una istruzione if
A <- c("A", "B", "C", "D")
B <- A
C <- c("A", "C", "C", "E")
> A == B
[1] TRUE TRUE TRUE TRUE
Questa è una buona situazione per andare avanti
> A == C
[1] TRUE FALSE TRUE FALSE
Poiché non v'è una falsa questa condizione di fermarsi e di uscita che la condizione doesnot stretta a 2 e 4 esima colonna.
if (A != B) {
stop("error the A and B does not match at column 2 and 4"} else {
cat ("I am fine")
}
Warning message:
In if (A != B) (stop("error 1")) :
the condition has length > 1 and only the first element will be used
Mi manca qualcosa di ovvio? Posso anche scrivere dove sono posizionate le posizioni di errore?
La tua cautela sul riciclaggio è il motivo per cui dovresti usare' isTRUE (all.equal (D, E)) '. –
Guardare il codice per 'all.equal.character' è stato illuminante per me. A causa dell'aspetto "quasi-uguaglianza" per i float, ho pensato che avrebbe fatto qualcosa di divertente anche per altre cose. Non sono sicuro di cosa, in retrospettiva. Ma l'unica cosa forse indesiderata che fa è controllare l'uguaglianza di tutti gli attributi, compresi i nomi. Ci vuole anche più attenzione con 'NA's rispetto al mio semplice codice sopra. – Aaron