Menu

R'de Değişkenler ve Atama: <-, = ve assign()

R'de <- oku ile değişken nasıl oluşturulur, bunun yerine ne zaman = gerekir, isimlendirme kuralları ve ls() ile rm() kullanarak değişkenleri listeleme ve silme.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

R'de Değişken Nasıl Oluşturulur

R'de bir değişken, bir değere iliştirilmiş bir isimdir. Atama oku <- ile oluşturursunuz: isim okun soluna, değer sağına gelir.

Üç değişken, üç farklı tür değer ve hiçbir yerde tür bildirimi yok - R türü doğrudan değerin kendisinden çıkarır (veri türleri sayfasında daha fazlası var). Bir değişken var olduktan sonra, değeri kullanacağınız her yerde onu kullanırsınız:

Yeniden atama da aynı şekilde çalışır. Bir değişken, siz tekrar atama yaptığınız anda yeni bir değere - hatta yeni bir türe - seve seve geçer:

R, bir metnin sayıya dönüşmesinden şikâyet etmedi. Bu esneklik kullanışlıdır, ama bir değişkenin anlamı betiğin ortasında değişiyorsa bu genellikle yeni bir isim seçmeniz gerektiğinin işaretidir.

R Neden = Yerine <- Kullanır

Herkesin sorduğu soru şudur: age = 30 da çalışıyor, öyleyse neden her R kitabı, stil rehberi ve paketi oku kullanıyor?

Çünkü R'de =, göründüğü yere göre iki farklı şeydir. En üst düzeyde atama yapar. Bir fonksiyon çağrısının içinde ise bir argümanı ismiyle eşleştirir ve değişken oluşturmaz:

mean(values, na.rm <- TRUE) yazsaydınız, kazara na.rm adında global bir değişken oluşturur ve TRUE değerini konuma göre geçirirdiniz - geçerli, yanlış ve fark etmesi zor. Bunu okunabilir tutan gelenek basittir:

  • <- her zaman atama demektir.
  • = her zaman "bu argüman bu değeri alır" demektir - bir fonksiyon çağrısının içinde.

Bu ayrımı izlerseniz okuduğunuz her R satırı bir şeyin oluşturulduğunu mu yoksa geçirildiğini mi bir bakışta size söyler. Bu, R dünyasındaki en evrensel stil kuralıdır - RStudio <- için ayrı bir klavye kısayolu bile verir (Alt+-).

Nadiren Kullanılan Kuzenler: ->, = ve assign()

R'de atama yapmanın iki yolu daha vardır; nadiren yazacak olsanız da ikisini de tanımaya değer.

Ters ok -> diğer yönde atama yapar - önce değer, sonra isim:

Bunu ara sıra uzun bir işlem hattının sonunda görürsünüz ("bütün bunları hesapla, sonra sakla"), ama çoğu stil rehberi kaçınmanızı söyler: okurlar tanımlanan ismi satırın başında ararlar.

assign() bir değişkeni bir metinden oluşturur; yani isim çalışma zamanında kurulabilir:

Bu zekice görünür ve neredeyse her zaman yanlış araçtır - numaralandırılmış bir değişken kümesi aslında kılık değiştirmiş bir vektör ya da listedir. assign() işlevine yalnızca bir ismin gerçekten hesaplanması gerektiğinde uzanın; eşi olan get("score") bir değişkeni metin ismiyle okur.

İsimlendirme Kuralları

R şu isimleri kabul eder:

  • Harf, rakam, nokta (.) ve alt çizgi (_) içerenler.
  • Bir harfle ya da ardından rakam gelmeyen bir noktayla başlayanlar.
  • Ayrılmış sözcük olmayanlar (if, for, TRUE, NULL, function ve birkaç tane daha).

Yani bunların hepsi geçerlidir:

Bunlar ise değildir:

  • 2nd_user - rakamla başlayamaz.
  • _temp - (Python'un aksine) alt çizgiyle de başlayamaz.
  • user-name - tire bir isim karakteri değil, çıkarma işlemidir.
  • TRUE - ayrılmış sözcük.

İsimler büyük/küçük harfe duyarlıdır: total, Total ve TOTAL birbiriyle ilgisiz üç değişkendir ve birini yazım hatasıyla var ettiğinizde R sizi uyarmaz.

Listeleme ve Silme: ls() ve rm()

Oluşturduğunuz her değişken çalışma alanına (global ortama) düşer. ls() orada ne olduğunu listeler, rm() ise siler:

Bilmeye değer iki ayrıntı var. Birincisi, rm(list = ls()) tüm çalışma alanını siler - keşif amaçlı bir oturumun başında kullanışlı, başka her yerde yıkıcıdır. İkincisi, noktayla başlayan isimler (.cache gibi) ls(all.names = TRUE) çağırmadıkça ls() çıktısında gizlidir - Unix'teki gizli dosyalarla aynı gelenek.

İsimlendirme Gelenekleri: snake_case Kullanın

Katı kuralların ötesinde, modern R topluluğu (ve tidyverse stil rehberi) bazı geleneklerde karar kılmıştır:

  • Değişkenler ve fonksiyonlar için lower_snake_case: retry_count, fit_model.
  • İsimlerdeki noktalar yasaldır ama demodedir: temel R, my.data gibi data.frame dönemi isimleriyle doludur, ama nokta R'nin S3 metot sisteminde de anlam taşır (print.data.frame, "veri çerçeveleri için print metodu" demektir), bu yüzden yeni kod onlardan kaçınır.
  • Macar öneki yok, camelCase yok - eski paketlerde camelCase görürsünüz, ama ekosistemin durduğu yer snake_case'tir.
  • R'de gerçek sabit yoktur; gelenek, sabit olması istenenleri büyük harfle adlandırmak (MAX_RETRIES <- 5) ve onlara yeniden atama yapmamaktır.

Açıklayıcı isimler seçin ve tutarlı kalın. avg_score, as yerine dört tuş fazlaya mal olur ve her gelecekteki okuru betiğin başına dönmekten kurtarır.

Buradan Ne Çıkarıyorsunuz

  • name <- value bir değişken oluşturur; topluluk = işaretini fonksiyon argümanlarına ayırır.
  • -> ve assign() vardır; onları yazmanız gerekenden daha sık okursunuz.
  • İsimler harf, rakam, nokta ve alt çizgi kullanır; rakam veya alt çizgiyle başlayamaz ve büyük/küçük harfe duyarlıdır.
  • ls() çalışma alanını gösterir, rm() onu temizler.
  • snake_case yazın; kodunuz bugün herkesin yazdığı R'ye benzesin.

Sırada: bu değişkenlerin aslında ne tür değerler tuttuğu - numeric, integer, character ve logical.

Sıkça Sorulan Sorular

R'de değişken nasıl oluşturulur?

İsmi, atama okunu <- ve değeri yazın: age <- 30. R türü değerden çıkarır - bildirim adımı yoktur. Betiğin en üst düzeyinde age = 30 da çalışır, ama topluluk geleneği <- yönündedir.

R'de <- ile = arasındaki fark nedir?

Bir betiğin en üst düzeyinde aynı işi yaparlar. Bir fonksiyon çağrısının içinde ise yapmazlar: mean(x, na.rm = TRUE) ifadesinde = bir değişken oluşturmaz, argümanı ismiyle eşleştirir. = bağlama göre iki rol üstlendiğinden, R stil rehberleri <- işaretini atamaya, = işaretini argümanlara ayırır.

R'de bir değişken nasıl silinir?

rm(x), x değişkenini çalışma alanından kaldırır. rm(list = ls()) her şeyi siler - temiz bir başlangıç için kullanışlı, analizin ortasında tehlikelidir. ls() şu anda nelerin var olduğunu listeler.

R değişken isimleri nokta içerebilir mi?

Evet - my.data tamamen geçerli bir isimdir ve eski R kodu her yerde nokta kullanır. Modern stil alt çizgiyi (my_data) tercih eder, çünkü nokta R'nin S3 metot sisteminde de bir anlam taşır ve bu, noktalı isimleri okurken belirsiz kılar.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA