0Pricing
R Academy · Ders

R'de Ortam Nedir?

Ortamları üst işaretçilerine sahip adlandırılmış listeler olarak inceleyin.

R'de Ortam Nedir?, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, R Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. R Academy kursu toplamda 4 dersten oluşur.

Environment Nedir

R'de environment, adlandırılmış bağlamalardan (adlandırılmış bir liste gibi) ve bir üst environment işaretçisinden oluşan bir derlemedir. Her değişken bir environment içinde bulunur. R bir ad aradığında önce geçerli environment içinde arama yapar, ardından üst zincirinde ilerler.

# The global environment holds your session variables
x <- 42
cat('x is in globalenv:', exists('x', envir = globalenv()), '\n')
cat('globalenv name:', environmentName(globalenv()), '\n')

globalenv(), baseenv() ve emptyenv()

R'de yerleşik birkaç environment vardır: globalenv() etkileşimli çalışma alanınızdır, baseenv() temel R işlevlerini içerir ve emptyenv() üstü olmayan zincirin tepesidir. Her environment zinciri sonunda emptyenv() ile sonlanır.

cat('global    :', environmentName(globalenv()),  '\n')
cat('base      :', environmentName(baseenv()),    '\n')
cat('empty     :', environmentName(emptyenv()),   '\n')
cat('parent of global:', environmentName(parent.env(globalenv())), '\n')

Environment Zinciri

emptyenv() dışında her environment'ın tam olarak bir üstü vardır. R geçerli environment içinde bir ad bulamazsa üst environment'a, ardından onun üstüne ve bu şekilde devam eder. R'nin değişken adlarını çözümlemesini sağlayan zincir budur.

# Walk the parent chain from globalenv
env <- globalenv()
for (i in 1:5) {
  cat(sprintf('Level %d: %s\n', i, environmentName(env)))
  if (identical(env, emptyenv())) break
  env <- parent.env(env)
}

Bir İşlev İçin environment()

Her işlevin ilişkili bir environment'ı vardır; bu, işlevin oluşturulduğu environment'tır. environment(f) bu environment'ı döndürür. Bu, işlevin çevreleyen environment'ıdır ve serbest değişkenleri nerede arayacağını belirler.

f <- function() 'hello'
cat('f was defined in:', environmentName(environment(f)), '\n')

# Inside a function, environment() returns its own env
show_env <- function() {
  cat('my env:', environmentName(environment()), '\n')
}
show_env()

Bir Environment Üzerinde as.list()

as.list(env), bir environment'ın bağlamalarını adlandırılmış bir listeye dönüştürür; bu, içeriği program aracılığıyla incelemek için kullanışlıdır. Bunu globalenv() ile birleştirmek, geçerli oturumdaki tüm değişkenleri gösterir.

a <- 10
b <- 'hello'
c_val <- TRUE
# Show current global bindings as list
bindings <- as.list(globalenv())
cat('Names in globalenv:', paste(ls(globalenv()), collapse = ', '), '\n')

ls() — Environment İçeriğini Listeleme

ls(), bir environment içinde bağlı olan adları listeler. Varsayılan olarak global environment'ı gösterir. Belirli bir environment'ı incelemek için envir = e aktarın. . ile başlayan adları da dahil etmek için all.names = TRUE ekleyin.

my_env <- new.env(parent = emptyenv())
my_env$x <- 1
my_env$y <- 'two'
my_env$.hidden <- TRUE
cat('Default ls:', ls(envir = my_env), '\n')
cat('All names :', ls(envir = my_env, all.names = TRUE), '\n')

new.env() — Ortamlar Oluşturma

new.env(parent = e), verilen üst ortama sahip yeni ve boş bir ortam oluşturur. Kalıtılan bağlamaların olmadığı, tamamen yalıtılmış bir ortam istediğinizde üst ortam olarak emptyenv() kullanın.

e <- new.env(parent = emptyenv())
e$name  <- 'Alice'
e$score <- 95
cat('Names:', ls(e), '\n')
cat('Name binding:', e$name, '\n')

Ortamlar ve Listeler

Ortamlar adlandırılmış listelere benzer görünür, ancak farklı davranır: her zaman yerinde değiştirilirler (değişiklikte kopyalama yapılmaz), bir üst ortama sahiptirler ve ad araması karma tablosu kullanılarak hızlıca yapılır. Listeler değiştirildiklerinde kopyalanır; ortamlar ise kopyalanmaz.

# Environments are reference objects (no copy-on-modify)
e <- new.env(parent = emptyenv())
e$x <- 1
f <- e        # f points to same env, not a copy
f$x <- 99
cat('e$x after modifying through f:', e$x, '\n')

Bir Ortamda exists() ve get()

exists('name', envir = e), bir adın bir ortama bağlanıp bağlanmadığını denetler (varsayılan olarak üst ortamlarda da arama yapar). get('name', envir = e) değeri alır. Her ikisi de yalnızca belirtilen ortamda arama yapmak için inherits = FALSE kabul eder.

e <- new.env(parent = emptyenv())
e$pi_approx <- 3.14159
cat('exists pi_approx:', exists('pi_approx', envir = e), '\n')
cat('exists missing:  ', exists('missing_var', envir = e), '\n')
cat('get pi_approx:   ', get('pi_approx', envir = e), '\n')

Yerleşik Ortamlar için environmentName()

environmentName(env), özel ortamların insanlar tarafından okunabilir adını döndürür. Kullanıcı tarafından oluşturulan ortamlar '' (boş dize) döndürür. Bu, hata ayıklama sırasında değişkenlerin nerede tanımlandığını izlemenize yardımcı olur.

cat(environmentName(globalenv()),    '\n')  # R_GlobalEnv
cat(environmentName(baseenv()),      '\n')  # package:base
cat(environmentName(emptyenv()),     '\n')  # R_EmptyEnv
e <- new.env(parent = emptyenv())
cat('User env name: "', environmentName(e), '"\n', sep = '')

Uygulama: Ortamları Önbellek Olarak Kullanma

Ortamlar yerinde değiştirildiği için değiştirilebilir önbellekler veya karma eşlemeleri olarak iyi çalışır. Yeniden hesaplamaktan kaçınmak için hesaplanan sonuçları bir ortamda depolayın — bu, kopyalama yapan bir listeyi değiştirmekten daha hızlıdır.

cache <- new.env(parent = emptyenv(), hash = TRUE)
cached_square <- function(n) {
  key <- as.character(n)
  if (exists(key, envir = cache, inherits = FALSE))
    return(get(key, envir = cache))
  result <- n^2
  assign(key, result, envir = cache)
  result
}
cat(cached_square(7), '\n')
cat(cached_square(7), '\n')  # served from cache

Kısa Denetim

R'nin ortam zincirindeki en üst ortam, yani üst ortamı olmayan ortam hangisidir?

Ortamlar: Temel Çıkarımlar

R ortamları için temel çıkarımlar:

  • Bir ortam = adlandırılmış bağlamalar + üst ortam işaretçisi
  • globalenv() = çalışma alanınız; baseenv() = temel R; emptyenv() = zincirin sonu
  • Ad araması, ad bulunana veya emptyenv() ortamına ulaşılana kadar üst ortam zincirinde ilerler
  • ls(envir=e) bağlamaları listeler; exists() denetler; get() alır
  • Ortamlar başvuru nesneleridir — değişiklikte kopyalama yapılmaz
  • new.env(parent=emptyenv()) yalıtılmış bir ortam oluşturur
e <- new.env(parent = emptyenv())
assign('counter', 0L, envir = e)
for (i in 1:5) assign('counter', e$counter + 1L, envir = e)
cat('Counter:', e$counter, '\n')
cat('Env name:', environmentName(e), '\n')
cat('Bindings:', ls(e), '\n')

Sıkça Sorulan Sorular

“R'de Ortam Nedir?” dersi ücretsiz mi?

Evet — “R'de Ortam Nedir?” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve R Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. R Academy kursu toplamda 4 dersten oluşur.

“R'de Ortam Nedir?” dersinde ne öğreneceğim?

Ortamları üst işaretçilerine sahip adlandırılmış listeler olarak inceleyin. R Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

R Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te R Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“R'de Ortam Nedir?” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu R Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her R Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. R'de Ortam Nedir?
  2. Sözcüksel Kapsam Kuralları
  3. Küresel ve Yerel Kapsam
  4. Ortamları Oluşturma ve İnceleme
← R Academy Sayfasına Dön