Indholdsfortegnelse:
Video: TIMELAPSE OF THE FUTURE: A Journey to the End of Time (4K) 2025
Mens du arbejder med funktioner i R, arbejder du nogle gange med nogle objekter, du ikke først lavede i arbejdsområdet. Du bruger argumenterne x, mult og FUN som om de er objekter, og du opretter en objektprocent inden for den funktion, som du ikke kan finde tilbage i arbejdsområdet, efter at du har brugt funktionen. Så hvad sker der?
Lav et test tilfælde
Lad os finde ud af gennem et lille eksempel. Opret først et objekt x og en lille test () funktion som denne:
x <- 1: 5 test <- funktion (x) {cat ("Dette er x:", x, "n") rm (x) kat det: ", x," n ")}
Funktionen test () gør ikke meget. Det tager et argument x, udskriver det til konsollen, fjerner det, og forsøger at udskrive det igen. Du tror måske, at denne funktion mislykkes, fordi x forsvinder efter linjen rm (x). Men nej, hvis du forsøger denne funktion virker det fint, som vist i følgende eksempel:
Selv efter at x er fjernet, kan R stadig finde en anden x at den kan udskrive. Hvis du ser lidt nærmere ud, ser du, at x'en, der er trykt i anden linje, faktisk ikke er den, du gav som et argument, men den x du tidligere oprettede i arbejdsområdet. Hvorfor?
Søg på stien
Hvis du bruger en funktion, skaber funktionen først et midlertidigt
lokalt miljø. Dette lokale miljø er indlejret inden for det globale miljø, hvilket betyder, at du fra det lokale miljø også kan få adgang til ethvert objekt fra det globale miljø. Så snart funktionen slutter, ødelægges det lokale miljø sammen med alle objekter i det.
forælder miljø. Hvis du kalder en funktion fra arbejdsområdet gennem et script eller ved hjælp af kommandolinjen, forekommer dette forældremiljø at være det globale miljø. Hvis R ser et objektnavn, der er nævnt i en kode i funktionen, søger den først i det lokale miljø. Fordi det finder et objekt x der, bruger det det til den første kat () erklæring. I den næste linje fjerner R det pågældende objekt x. Så når R når den tredje linje, kan den ikke finde et objekt x i det lokale miljø længere. Intet problem. R flytter op i stakken af miljøer og kontrollerer for at se, om det finder noget, der ligner en x i det globale miljø. Fordi det kan finde en x der bruger den den ene i den anden kat () erklæring.
Hvis du bruger rm () i en funktion, vil rm () som standard kun slette objekter i den funktion.På den måde kan du undgå at løbe tør for hukommelse, når du skriver funktioner, der skal arbejde på store datasæt. Du kan straks fjerne store midlertidige objekter i stedet for at vente på, at funktionen gør det i slutningen.