Qual è la differenza tra = e ==?

Qual è la differenza tra = e ==? Ho trovato casi in cui il doppio segno di uguale permetterà l’esecuzione dello script, mentre un segno di uguale produce un messaggio di errore. Quando devo usare == invece di =?

  • = è di assegnazione, == è un confronto logico
  • Sono anche pagine di aiuto se siete mai bloccati. help("=") e and help("==")
InformationsquelleAutor bubbalouie | 2015-01-27

 

4 Replies
  1. 12

    Dipende dal contesto, in quanto a ciò che = significa. == è sempre per il test di uguaglianza.

    = può essere

    1. nella maggior parte dei casi usato come una sostituzione drop-in per <-, l’operatore di assegnazione.

      > x = 10
      > x
      [1] 10
    2. utilizzato come separatore di coppie chiave-valore usato per assegnare i valori di argomenti nelle chiamate di funzione.

      rnorm(n = 10, mean = 5, sd = 2)

    A causa di 2. sopra, = non può essere usato come una sostituzione drop-in per <- in tutte le situazioni. Considerare

    > rnorm(N <- 10, mean = 5, sd = 2)
     [1] 4.893132 4.572640 3.801045 3.646863 4.522483 4.881694 6.710255 6.314024
     [9] 2.268258 9.387091
    > rnorm(N = 10, mean = 5, sd = 2)
    Error in rnorm(N = 10, mean = 5, sd = 2) : unused argument (N = 10)
    > N
    [1] 10

    Ora qualcuno potrebbe considerare rnorm(N <- 10, mean = 5, sd = 2) poveri di programmazione, ma è valido ed è necessario essere consapevoli delle differenze tra = e <- per l’assegnazione.

    == è sempre utilizzato per la parità di test:

    > set.seed(10)
    > logi <- sample(c(TRUE, FALSE), 10, replace = TRUE)
    > logi
     [1] FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
    > logi == TRUE
     [1] FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
    > seq.int(1, 10) == 5L
     [1] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE

    Fare attenzione con == troppo tuttavia, come in realtà significa esattamente uguale e su un computer in cui le operazioni in virgola mobile sono coinvolti non si può ottenere la risposta che ti aspettavi. Per esempio, da ?'==':

    > x1 <- 0.5 - 0.3
    > x2 <- 0.3 - 0.1
    > x1 == x2                           # FALSE on most machines
    [1] FALSE
    > identical(all.equal(x1, x2), TRUE) # TRUE everywhere
    [1] TRUE

    dove all.equal() test per l’uguaglianza, consentendo un po ‘ di confusione a causa della perdita di precisione/di operazioni in virgola mobile.

    • Presumo che il problema si verifica a causa del sottoinsieme e funzioni simili: Dire che nell’avere un set di dati con i paesi di essere una delle colonne “Continenti”. Teh codice riportato di seguito viene restituito un ampty dati.telaio: “ Asia <- subset(paesi, Continenti == “Asia”) “ questo codice, però, sarebbe fare la cosa giusta: “ Asia <- subset(paesi, Continenti = “Asia”) “
  2. 6

    = è sostanzialmente un sinonimo di assegnazione ( <- ), ma più spesso utilizzato quando il passaggio di valori di funzioni.

    == è un test per l’uguaglianza

  3. 3

    Nel più semplice dei termini, prendere queste due righe di codice, ad esempio:

    1) x = 10

    2) x == 10

    La prima riga (x = 10) significa “io sono dominante che x è uguale a 10.”

    Seconda riga (x == 10) significa “io sono la domanda, è x uguale a 10?”

    Se scrivi “x == 10” in primo luogo, che vi darà un messaggio di errore e ti dico che x non è stato trovato.

    Se scrivi “x = 10,” questo negozio x 10.

    Dopo avere scritto “x = 10”, quindi se scrivi “x == 10,” rispondere “VERO”, come in “sì, x non è uguale a 10, perché hai fatto x pari a 10.” Ma se scrivi “x == 11” o “x == 12” x == nulla oltre 10, quindi si risponderà che “FALSE”, come in “no, x non è uguale a 11 o 12 o nulla oltre 10, perché hai fatto x pari a 10.”

  4. 0
    • (=) è un Assegnazione operatore (==) è un Pari a operatore.
    • (=) è utilizzato per assegnare i valori da destra a sinistra, mentre (==) è utilizzato per mostrare l’uguaglianza tra i valori.

    Esempio:

    $test = 1;
    if($test=2){
    echo "Hello";
    }
    
    if($test==2){
    echo "world";
    }
    //The result is Hello because = is assigning the value to $test and the second condition is false because it check the equality of $test to the value 2.

    Spero che questo sarà di aiuto.

Lascia un commento