0Pricing
R Academy · Ders

Ortamları Oluşturma ve İnceleme

Ortamlarla çalışmak için new.env(), environment(), ls() ve get() kullanın.

Ortamları Oluşturma ve İnceleme, CoddyKit'te ücretsiz bir R Academy dersidir. Bu, 4 dersinin 4. 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.

Yeni Bir Ortam Oluşturma

new.env(parent = e), yeni ve boş bir ortam oluşturur. parent bağımsız değişkeni, yeni ortamda bir ad bulunamadığında hangi ortamda arama yapılacağını belirler. Tamamen yalıtılmış bir ortam için emptyenv() kullanın.

# Isolated environment (no parent chain)
e1 <- new.env(parent = emptyenv())
# Environment with global as parent
e2 <- new.env(parent = globalenv())
cat('e1 parent:', environmentName(parent.env(e1)), '\n')
cat('e2 parent:', environmentName(parent.env(e2)), '\n')

assign() — Bağlama Ekleme

assign('name', value, envir = e), belirtilen ortamda adlandırılmış bir bağlama oluşturur veya günceller. e$name <- value işleminin programatik karşılığıdır; ancak ad bir değişkende saklandığında da çalışır.

e <- new.env(parent = emptyenv())
assign('x', 10, envir = e)
assign('y', 'hello', envir = e)
assign('z', TRUE, envir = e)
cat('x:', get('x', envir = e), '\n')
cat('y:', get('y', envir = e), '\n')

get() ve mget()

get('name', envir = e) tek bir bağlamayı alır. mget(c('a','b'), envir = e) birden çok bağlamayı aynı anda alır ve adlandırılmış bir liste döndürür. Ad mevcut değilse her ikisi de hata verir (inherits zincirde aramaya izin vermediği sürece).

e <- new.env(parent = emptyenv())
e$alpha <- 1
e$beta  <- 2
e$gamma <- 3
# Single
get('alpha', envir = e)
# Multiple
mget(c('alpha', 'beta', 'gamma'), envir = e)

ls() — Bağlamaları Listeleme

ls(envir = e), e ortamına bağlı tüm adların bir character vektörünü döndürür. Noktayla başlayan adları (varsayılan olarak gizlidir) dahil etmek için all.names = TRUE ekleyin. Adlar alfabetik sırayla döndürülür.

e <- new.env(parent = emptyenv())
e$b_val  <- 2
e$a_val  <- 1
e$.secret <- 'hidden'
cat('Default ls:', ls(envir = e), '\n')
cat('All names :', ls(envir = e, all.names = TRUE), '\n')

inherits ile exists()

exists('name', envir = e, inherits = FALSE), üst ortamları değil yalnızca belirtilen ortamı denetler. Varsayılan değer olan inherits = TRUE ile üst ortam zincirinde de arama yapar. Katı yerel denetimler için inherits = FALSE kullanın.

parent_e <- new.env(parent = emptyenv())
parent_e$shared <- 42
child_e  <- new.env(parent = parent_e)
# inherits=TRUE: finds shared in parent
cat('inherits TRUE:', exists('shared', envir = child_e, inherits = TRUE),  '\n')
# inherits=FALSE: only looks in child
cat('inherits FALSE:', exists('shared', envir = child_e, inherits = FALSE), '\n')

environmentName() ve parent.env()

environmentName(e), yerleşik bir ortamın adını ('R_GlobalEnv', 'package:base' vb.) döndürür. Kullanıcı tarafından oluşturulan ortamlar '' döndürür. parent.env(e), üst ortam nesnesini döndürür.

e <- new.env(parent = globalenv())
cat('Name of e     :', environmentName(e), '\n')
cat('Parent of e   :', environmentName(parent.env(e)), '\n')
cat('Name of global:', environmentName(globalenv()), '\n')

Ortamlar için $ Söz Dizimi

Ortamlar, bağlamaları okumak ve yazmak için listelerdeki gibi $ ve [[ söz dizimini destekler. Yazma sırasında ad biliniyorsa doğrudan erişim için bu yöntem genellikle get()/assign() kullanımından daha pratiktir.

e <- new.env(parent = emptyenv())
e$pi_approx <- 3.14159
e[['e_approx']] <- 2.71828
cat('pi:', e$pi_approx, '\n')
cat('e :', e[['e_approx']], '\n')

Belirli Bir Ortamda rm()

rm('name', envir = e), belirli bir ortamdan bir bağlamayı kaldırır. Bu, genel bir değişkeni kaldırmaktan farklıdır — özel ortamlarla çalışırken ortamı açıkça belirtmeniz gerekir.

e <- new.env(parent = emptyenv())
e$keep <- 1
e$remove_me <- 99
cat('Before:', ls(envir = e), '\n')
rm('remove_me', envir = e)
cat('After :', ls(envir = e), '\n')

Bir Ortamı Dışa Aktarmak için as.list()

as.list(e), bir ortamdaki tüm bağlamaları adlandırılmış bir listeye dönüştürür; böylece içeriği incelemek veya seri hâle getirmek kolaylaşır. Sonuç bir anlık görüntüdür — ortamda daha sonra yapılan değişiklikler listeye yansıtılmaz.

e <- new.env(parent = emptyenv())
e$x <- 10
e$y <- 20
e$z <- 30
bindings <- as.list(e)
cat('Class:', class(bindings), '\n')
cat('Length:', length(bindings), '\n')
str(bindings)

Karma Tabloları Olarak Ortamlar

new.env() içindeki hash = TRUE seçeneği (üst ortam ayarlandığında varsayılandır), karma tabanlı aramayı etkinleştirerek ad aramasını O(1) hâline getirir. Bu, büyük ortamları anahtar-değer depolamada listelerden çok daha hızlı yapar.

# Build a small key-value store
store <- new.env(hash = TRUE, parent = emptyenv())
keys   <- paste0('key_', 1:5)
values <- c(10, 20, 30, 40, 50)
for (i in seq_along(keys)) assign(keys[i], values[i], envir = store)
# Retrieve
cat('key_3 =', get('key_3', envir = store), '\n')
cat('All keys:', ls(store), '\n')

Ortamları Kopyalama ve Paylaşma

Bir ortamı yeni bir değişkene atamak ortamı kopyalamaz; her iki değişken de aynı nesneye başvurur. Bağımsız ortamlara ihtiyacınız varsa gerçek bir kopya oluşturmak için as.list() ve ardından list2env() kullanın.

e1 <- new.env(parent = emptyenv())
e1$val <- 100
e2 <- e1          # reference, not a copy
e2$val <- 999
cat('e1$val:', e1$val, '\n')  # 999, modified via e2!

# True copy:
e3 <- list2env(as.list(e1), parent = emptyenv())
e3$val <- 0
cat('e1$val after e3 change:', e1$val, '\n')  # still 999

Hızlı Kontrol

Bir adın, üst ortamlarında arama yapmadan bir ortama bağlanıp bağlanmadığını hangi işlev denetler?

Ortam Oluşturma: Temel Çıkarımlar

Ortam oluşturma ve inceleme için temel çıkarımlar:

  • new.env(parent=e) yeni ve boş bir ortam oluşturur; büyük depolar için hash=TRUE kullanın
  • Programatik erişim için assign('x', v, envir=e) ve get('x', envir=e) kullanılır
  • e$x ve e[['x']] liste erişimcileri gibi çalışır
  • ls(envir=e) adları listeler; kesin denetim için exists('x', envir=e, inherits=FALSE) kullanılır
  • as.list(e) bir listeye aktarır; list2env() yeniden oluşturur
  • Ortamlar başvuru nesneleridir; atama kopyalamaz, paylaşır
config <- new.env(hash = TRUE, parent = emptyenv())
assign('host', 'localhost', envir = config)
assign('port', 5432L,       envir = config)
assign('db',   'mydb',      envir = config)
cat('Keys  :', ls(config), '\n')
cat('host  :', config$host, '\n')
cat('port  :', config$port, '\n')

Sıkça Sorulan Sorular

“Ortamları Oluşturma ve İnceleme” dersi ücretsiz mi?

Evet — “Ortamları Oluşturma ve İnceleme” 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.

“Ortamları Oluşturma ve İnceleme” dersinde ne öğreneceğim?

Ortamlarla çalışmak için new.env(), environment(), ls() ve get() kullanın. 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 4. dersidir.

“Ortamları Oluşturma ve İnceleme” 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