İfadeler ve Otomatik Yazdırma
R bir ifade dilidir: yazdığınız hemen her satır bir değer üretir. Konsolda, kendi başına yazılan bir ifade değerlendirilir ve değeri otomatik yazdırılır - print() gerekmez:
Her sonucun başında [1] bulunur - bu, R'nin size gösterilen ilk değerin konumunu söylemesidir; R'nin vektörlerle düşündüğünün ilk ipucu (aşağıda daha fazlası). Otomatik yazdırmanın ilk günden bilinmeye değer bir püf noktası var: yalnızca en üst düzeydeki çıplak ifadeler için geçerlidir. Aynı ifade bir fonksiyon gövdesi veya for döngüsü içindeyken hiçbir şey yazdırmaz - bu yüzden betikler, görmeniz gereken çıktılar için açık cat() veya print() kullanır.
Atama: Ok
R'nin atama operatörü <- işaretidir; değeri alan isme doğru bakan bir ok:
radius <- 5 ifadesini "radius 5 alır" diye okuyun. Evet, = de en üst düzey atamada çalışır ve evet, yeni gelenler neden kimsenin bir karakter yerine iki karakter yazdığını sorar. Yanıt, yaptırımı olan bir gelenektir: her büyük stil rehberi, temel R dokümantasyonu ve okuyacağınız neredeyse tüm R kodu atama için <- kullanır ve ='i tek bir işe ayırır - fonksiyon çağrılarının içinde argüman adlandırmak (sonraki bölüm). Geleneğe uymak, iki işlemi görsel olarak ayırt edilir kılar. RStudio'da Alt+- (macOS'te Option+-) oku sizin yerinize yazar.
Bir atamanın otomatik yazdırılmadığına dikkat edin - area <- 78.5 değeri sessizce saklar. Yukarıdaki parçanın print() gerektirmesinin nedeni bu.
Büyük/Küçük Harf Duyarlılığı
R, hem sizin oluşturduğunuz isimlerde hem de dilin sağladığı isimlerde kesinlikle büyük/küçük harfe duyarlıdır:
İki farklı değişken. Aynı şekilde mean() bir fonksiyondur, Mean() diye bir şey yoktur. R sizi object 'x' not found veya could not find function ile karşıladığında, her şeyden önce büyük/küçük harfleri kontrol edin - bu, en yaygın başlangıç hatasıdır.
Fonksiyon Çağrıları ve İsimli Argümanlar
Fonksiyonlar parantezlerle çağrılır, argümanlar virgülle ayrılır. Argümanlar konumla, isimle veya karışık eşleştirilebilir:
seq() çağrısı, R'nin isimli argüman söz dizimini gösterir - ve işte ='in hakkını verdiği yer: bir çağrının içinde name = value, bir argümanı etiketler. İsimli argümanlar sizi parametre sırasını ezberlemekten kurtarır ve çağrıları kendi kendini belgeleyen hale getirir; seq(0, 100, 25) aynı şekilde çalışır ama okura daha az şey söyler. Çalışan gelenek: ilk argümanı (genellikle veriyi) konumla geçirin, kalanları adlandırın.
Herhangi bir fonksiyon hakkında yardım almak tek tuştur: konsolda ?seq, dokümantasyonunu açar.
Her Şey Bir Vektördür
R'yi diğer dillerden farklı hissettiren fikir: çıplak tekil sayı yoktur. 5 bile bir uzunluğunda bir vektördür ve işlemler tüm vektörlere öğe bazında uygulanır:
Hiçbir yerde döngü yok, yine de her öğe dönüştürüldü. Çoğu dilde bu, bir for döngüsünün üç yinelemesidir; R'de aritmetiktir. Buna vektörleştirme denir ve her şeyi şekillendirir - karşılaştırma operatörleri, dize fonksiyonları ve matematik fonksiyonlarının hepsi bu şekilde çalışır. Deyimsel R'nin beklediğinizden çok daha az döngü içermesinin nedeni budur; hikayenin tamamı vektörler sayfasında.
Süslü Parantezler ve Bloklar
Çok satırlı gövdeler - if, döngüler ve fonksiyonlar için - süslü parantezlerle {} gruplanır:
Dikkat edilecek iki şey. Koşul parantezlerin içinde yaşar ve if: veya if ... then değil, düz if'tir. Ve Python'un aksine R'de girintinin bir anlamı yoktur - bloğu süslü parantezler tanımlar, girinti insanlar içindir. Tek satırlıklarda süslü parantezleri atlamak yasaldır ama klasik bir düzenleme hatası kaynağıdır; her zaman kullanın.
Boşluklar ve Noktalı Virgüller
R fazladan boşlukları yok sayar ve bir yeni satır ifadeyi bitirir - noktalı virgül gerekmez:
Satırlara bölme, 3. satır + ile bittiği için çalışır; böylece R ifadenin bitmediğini bilir. Uzun satırları bölerken hatırlanacak tek kural budur: operatörden veya virgülden sonra bölün, asla önce değil; yoksa R ilk satırı tamamlanmış sayar. Noktalı virgüller yalnızca iki ifadeyi tek satıra sıkıştırmak için vardır (a <- 1; b <- 2) - yasal, önerilmeyen, kolayca kaçınılabilir.
Stil: R Kodu Nasıl Yazılır
Dil bilgisinin ötesinde, R'nin güçlü topluluk gelenekleri vardır (ekosistemin çoğunun izlediği tidyverse stil rehberinde kodlanmıştır):
- Atama için
<-,=yalnızca çağrıların içindeki argümanlar için. snake_caseisimler:monthlyRevenueveyamonthly.revenuedeğil,monthly_revenue. Noktalar R isimlerinde yasaldır ama kaçınmakta yarar var - R'nin iç mekanizmalarının kullandığı bir adlandırma deseniyle çakışırlar.- Operatörlerin etrafında ve virgüllerden sonra boşluk (
x<-a*2değil,x <- a * 2). - Süslü parantezlerin içinde dört boşlukla girinti (bazı ekipler iki kullanır; birini seçin, tutarlı kalın).
- Satır başına bir ifade.
Bunların hiçbirini yorumlayıcı dayatmaz. Hepsini kodunuzu okuyan herkes dayatır. Bu hikayenin adlandırma yarısı değişkenler sayfasında devam ediyor.
Buradan Ne Çıkarıyorsunuz
- R ifadeleri değerlendirir ve konsolda çıplak olanları otomatik yazdırır - ama fonksiyonların veya döngülerin içinde yazdırmaz.
<-("alır") ile atayın;='i yalnızca fonksiyon çağrılarında argüman adlandırmak için kullanın.- R tamamen büyük/küçük harfe duyarlıdır - büyük harf yazım hataları erken dönemdeki "not found" hatalarının çoğuna neden olur.
- Her şey bir vektördür ve işlemler öğe bazında uygulanır:
c(1, 2, 3) * 2sonucu2 4 6'dır, döngü yok. - Blokları süslü parantezler tanımlar, yeni satırlar ifadeleri bitirir;
snake_caseve boşluk kuralları kodunuzu herkesinkine benzetir.
Sırada: yorumlar - R kodunu nasıl açıklama yazarsınız ve R'nin eksik blok yorum söz dizimine ne yapılır.
Sıkça Sorulan Sorular
R'de <- ne anlama gelir?
<-, R'nin atama operatörüdür: x <- 5, 5 değerini x adı altında saklar. "Alır" diye okuyun. = de en üst düzeyde atama yapar, ama topluluk kuralı - her büyük stil rehberinin dayattığı - atama için <-, yalnızca fonksiyon çağrılarının içinde argüman adlandırmak için = kullanmaktır.
R büyük/küçük harfe duyarlı mı?
Evet, tamamen. total, Total ve TOTAL üç farklı isimdir ve mean(x) yerine Mean(x) çağırmak bir uyarı değil, hatadır. Bir 'could not find function' veya 'object not found' hatası çoğu zaman sadece bir büyük harf yazım hatasıdır.
R'de noktalı virgül gerekli mi?
Hayır. Bir yeni satır, ifadeyi bitirir. Noktalı virgüller yalnızca iki ifadeyi tek satıra sıkıştırmak için gerekir (a <- 1; b <- 2) - stil rehberleri zaten bunu önermez. Satır başına bir ifade yazın ve noktalı virgülleri bir daha düşünmeyin.
R'nin vektörleştirilmiş olması ne demek?
R'nin temel işlemleri vektörlerin tamamı üzerinde aynı anda çalışır. c(1, 2, 3) * 2 sonucu 2 4 6 verir - çarpma, döngü olmadan her öğeye uygulanır. Başka bir dilde for döngüsü olacak çoğu kod, R'de tek bir ifadedir.