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,functionve 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.datagibidata.framedö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
camelCasegö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 <- valuebir değişken oluşturur; topluluk=işaretini fonksiyon argümanlarına ayırır.->veassign()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_caseyazı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.