Beste svaret
Jeg tror denne historien ikke er anekdotisk. Som alle sa, R er basert på S, og jeg gjetter at S står for statistisk språk og S var et åpent kildespråk. Å se den økende betydningen av S IBM ønsket å skaffe seg den, men den delen av kjerneteamet til S ønsket å beholde den som åpen kildekode, og den resterende delen ble enige om for IBMs forslag. Senere skaffet IBM seg en del og ble til S-pluss, og open source-samfunnet trivdes og gjorde mange tillegg til S og som til slutt ble omdøpt til R. $ når det refereres til R, men det gjør det enkelt å referere i mange tilfeller. $ I R brukes vanligvis når det refereres til et navngitt objekt i et større dataobjekt. Dette kan brukes på objekter som lister og datarammer.
Eksempel
La oss først lage en liste som inneholder litt tilfeldig informasjon:
random <- list("numbers" = c(1, 2, 3), "places" = list("countries" = c("Canada", "South Africa"), "cities" = c("Vancouver", "Cape Town")))
Dette er strukturen i den tilfeldige listen vår:
> random
$numbers
[1] 1 2 3
$places
$places$countries
[1] "Canada" "South Africa"
$places$cities
[1] "Vancouver" "Cape Town"
Vi kan referere til de forskjellige elementene i listen på nøyaktig samme måte som vist i strukturen ovenfor. Hvis vi for eksempel vil ha hele "stedslisten", som inneholder land- og byinformasjon, kan vi referere til den slik:
> random$places
$countries
[1] "Canada" "South Africa"
$cities
[1] "Vancouver" "Cape Town"
Hvis vi bare vil ha landnavn, kan vi bruke $ til å bore lenger ned i listen:
random$places$countries
[1] "Canada" "South Africa"
Husk at vi kan ikke bruke $ når det refereres til atomvektorer (vektorer som inneholder enkeltverdier, for eksempel tall eller tegnstrenger). Landnavnene ovenfor er for eksempel lagret i en atomvektor. Vi må bruke indeksnavnet eller nummeret for å hente et enkelt land:
> random$places$countries[2]
[1] "South Africa"
Selv om landet hadde et indeksnavn, vil vi ikke kunne bruke $.
> countries <- c("country1" = "Canada", "country2" = "South Africa")
La oss prøve å hente "Sør-Afrika" med $:
> countries$country2
Error in countries$country2 : $ operator is invalid for atomic vectors
Vi får en feil, fordi land er en atomvektor. I dette tilfellet må vi bruke indeksnavnet eller nummeret:
> 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"
Håper dette hjelper!