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 programlama dilleri çizimi

Coddy ile kodlamayı öğren

Başla