Care este diferența dintre = și ==? (Programare, R, Sintaxă, R Faq)

bubbalouie a intrebat.

Care este diferența dintre = și ==? Am găsit cazuri în care semnul egal dublu va permite scriptului meu să ruleze, în timp ce un semn egal produce un mesaj de eroare. Când ar trebui să folosesc == în loc de =?

Comentarii

  • = este atribuirea, == este o comparație logică –  > Por Andrew Taylor.
  • De asemenea, există pagini de ajutor dacă vă blocați vreodată. help("=") și and help("==") –  > Por Rich Scriven.
4 răspunsuri
Gavin Simpson

Depinde de context în ceea ce privește ceea ce = înseamnă. == este întotdeauna pentru testarea egalității.

= poate fi

  1. în majoritatea cazurilor utilizat ca înlocuitor pentru <-, , operatorul de atribuire.

    > x = 10
    > x
    [1] 10
    
  2. utilizat ca separator pentru perechile cheie-valoare utilizate pentru a atribui valori argumentelor în apelurile de funcții.

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

Din cauza 2. de mai sus, = nu poate fi utilizat ca înlocuitor pentru <- în toate situațiile. Luați în 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

Acum, unii ar considera că rnorm(N <- 10, mean = 5, sd = 2) o programare proastă, dar este valabilă și trebuie să fiți conștienți de diferențele dintre = și <- pentru atribuire.

== se utilizează întotdeauna pentru testarea egalității:

> 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

Aveți grijă cu == deoarece înseamnă de fapt exact egal cu și, pe un calculator în care sunt implicate operații cu virgulă mobilă, este posibil să nu obțineți răspunsul pe care îl așteptați. De exemplu, din ?'==':

> 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

unde all.equal() testează egalitatea, permițând un pic de neclaritate din cauza pierderii de precizie/operațiilor cu virgulă mobilă.

Comentarii

  • Presupun că întrebarea apare din cauza funcțiilor subset și a celor similare: Să spunem că avem un set de date în care țările sunt una dintre coloanele „Continente”. Codul de mai jos ar returna un cadru de date amplu: „` Asia <- subset(countries, Continents == „Asia”) „` acest cod ar face însă ceea ce trebuie: „` Asia <- subset(countries, Continents = „Asia”) „`.  > Por runlevel0.
Avraham

= este practic un sinonim pentru atribuirea ( <- ), dar cel mai des folosit la trecerea valorilor în funcții.

== este un test pentru egalitate

TJE

În cel mai simplu dintre termeni, luați ca exemplu aceste două linii de cod:

1) x = 10
2) x == 10

Prima linie (x = 10) înseamnă „Ordon ca x să fie egal cu 10”.

A doua linie (x == 10) înseamnă „Pun întrebarea: este x egal cu 10?”.

Dacă scrieți mai întâi „x == 10”, se va afișa un mesaj de eroare și vi se va spune că x nu este găsit.

Dacă scrieți „x = 10”, acesta va stoca x ca fiind 10.

După ce ați scris „x = 10”, dacă scrieți „x == 10”, vă va răspunde „ADEVĂRAT”, ca în „da, x este egal cu 10, pentru că ați făcut x egal cu 10”. Dar dacă scrieți „x == 11” sau „x == 12” sau x == orice altceva în afară de 10, atunci va răspunde că „FALSE”, ca în „nu, x nu este egal cu 11 sau 12 sau orice altceva în afară de 10, pentru că ați făcut ca x să fie egal cu 10″.”.

Gaurav Gupta
  • (=) este un Assignment în timp ce (==) este un operator de Egal cu operator.
  • (=) este utilizat pentru a atribui valorile de la dreapta la stânga, în timp ce (==) este utilizat pentru a arăta egalitatea între valori.

Exemplu:

$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.

Sper că acest lucru vă va ajuta.