Cel mai bun răspuns
Cred că această poveste nu este anecdotică. După cum a spus fiecare, R se bazează pe S și presupun că S reprezintă limbaj statistic și S a fost un limbaj open source. Văzând semnificația crescândă a S IBM a vrut să o achiziționeze, dar partea echipei de bază a S a dorit să o păstreze ca sursă deschisă, iar partea rămasă a fost de acord cu propunerea IBM. Mai târziu, partea achiziționată de IBM a devenit S-plus și comunitatea open source a prosperat și a făcut multe adăugiri la S și care în cele din urmă a fost redenumită ca R.
Răspuns
Nu este obligatoriu $ atunci când se face referire în R, dar facilitează referințarea în multe cazuri. $ În R este de obicei utilizat atunci când se face referire la un obiect numit într-un obiect de date mai mare. Acest lucru poate fi aplicat obiectelor precum liste și cadre de date.
Exemplu
Să creăm mai întâi o listă care conține informații aleatorii:
random <- list("numbers" = c(1, 2, 3), "places" = list("countries" = c("Canada", "South Africa"), "cities" = c("Vancouver", "Cape Town")))
Aceasta este structura listei noastre aleatorii:
> random
$numbers
[1] 1 2 3
$places
$places$countries
[1] "Canada" "South Africa"
$places$cities
[1] "Vancouver" "Cape Town"
Putem face referire la diferitele elemente din listă exact în același mod așa cum se arată în structura de mai sus. De exemplu, dacă dorim întreaga listă „locuri”, care conține informații despre țară și oraș, o putem face referire astfel:
> random$places
$countries
[1] "Canada" "South Africa"
$cities
[1] "Vancouver" "Cape Town"
Dacă vrem doar numele țărilor, putem folosi $ pentru a detalia mai departe în listă:
random$places$countries
[1] "Canada" "South Africa"
Rețineți, noi nu poate utiliza $ atunci când face referire la vectori atomici (vectori care conțin valori unice, cum ar fi numere sau șiruri de caractere). De exemplu, numele țărilor de mai sus sunt stocate într-un vector atomic. Trebuie să folosim numele sau numărul indexului pentru a prelua o singură țară:
> random$places$countries[2]
[1] "South Africa"
Chiar dacă țara avea un nume de index, nu vom putea folosi $.
> countries <- c("country1" = "Canada", "country2" = "South Africa")
Să încercăm să recuperăm „Africa de Sud” cu $:
> countries$country2
Error in countries$country2 : $ operator is invalid for atomic vectors
Obținem o eroare, deoarece țările sunt un vector atomic. În acest caz, trebuie să folosim numele sau numărul indexului:
> countries["country2"] #using the name of the item
country2
"South Africa"
> countries[2] #using the index of the country within the vector
country2
"South Africa"
Sper că acest lucru vă va ajuta!