R Dili Part-1 / R Programlama Temelleri
Merhabalar, iyi forumlar herkese.
Yeterli miktarda Türkçe kaynak bulunmamasından ve forumda daha önce konusu açılmamış olması hasebiyle bu konuyu açma gereği duydum.
Bu seride R programlama dili nedir? Hangi amaçlarda kullanılır? Nasıl yüklenir? Nasıl çalışır gibi konulara değinmek istiyorum.
Konumuza geçelim.
R NEDİR?
R, yoğunlukla veri bilimciler tarafından kullanılan bir yazılım dilidir.
Veri modelleme, veri analizi gibi alanlarda bize kolaylıklar sağlar. R dili, geniş bir döküman desteğine sahiptir. 2 milyondan fazla kullanıcı olduğu bilinmektedir. İhtiyaçlara hızlı bir şekilde cevap verebilmesi ile bilinir. Bunun ile birlikte R, kullanıcı ihtiyacına göre pakat geliştirilmesi konusunda da olanaklar tanır.
R dili, Ross Ihaka ve Robert Gentlemen tarafından S dilinin uyarlaması olarak 1991 yılında ortaya çıkmıştır.
Neden Python Kütüphaneleri dururken R?
Bu soruyu şu şekilde kısaca cevaplamak yerinde olacaktır. Python Nesne Tabanlı Programlamaya yönelik bir dildir. R dilinde durum böyle değildir. Bunun ile birlikte R detaylı şekilde veri analizi için kullanılmaktadır. Bir firmaya bu şekilde bir detaylı rapor sunulacak ise eğer bunun için R tercih edilmesi mantıklı bir dildir. Eğer ben Neural Network geliştireceğim sıfırdan yapay zeka kodlayacğım tarzında bir hedefiniz var ise Python'a yönelmeniz mantıklı olacaktır. Yukarıda belirttiğimiz gibi R dili veri bilimi için kullanılmaktadır. Bunun için içerisinde yeri geldiğinde değineceğimiz veri analizi için hazır olarak gelen fonksiyonları mevcuttur. Daha detaylı bilgi için;[ame="https://www.youtube.com/watch?v=wKyYkeXZqd0&list=PLZrZMDJ_v_bE-kK9S2OB7XfpL9AUvN1-g&index=6&t"]video[/ame]
NASIL İNDİRİLİR HANGİ ORTAMLARDA KOD YAZILIR?
R dilini bilgisayarımızda çalıştırabilmemiz için önce buradan R'ı, daha sonra buradan bu dil için uygun bir IDE olan RStudio'yu indirmeliyiz.
Desktop Free Versiyonu indirebiliriz.
R yüklendikten sonra açılış ekranı aşağıdaki şekilde olacaktır;
RStudio yüklendikten sonra açılış ekranı aşağıdaki şekilde olacaktır;
Ben göz yormaması için temasını Tools > Global Options > Appearance kısmından değiştiriyorum.
Daha sonrasında her programlama dilinin başlangıcında bulunan adet üzere hello world yazdıralım ekrana.
Görselde belirttiğim alandan scriptlerimizi yazacağımız alanı açıyoruz.
Daha sonrasında,
yazıp CTRL + Enter tuşlarına basıyoruz. (İmleç kodun bulunduğu satırdayken!)
Hello world yazdıktan ve kodlarımızı nasıl çalıştırabileceğimizi öğrendikten sonra, değişken tanımlamalarına ve veri tiplerine geçelim.
DEĞİŞKEN NASIL TANIMLANIR?
R dilinin atama operatörü şu şekildedir.
Örnek verecek olursak eğer;
Bir değişkene int tipinde bir değer atamak istediğim zaman,
Şeklinde tanımlıyorum. Sonuna eklediğimiz L ifadesi dilin bu değerin bir tam sayı olduğunu anlamasın için kullanılmaktadır. R sayısal veri tiplerini eğer bir değer belirtilmez ise double tipinde almaktadır.
Örnek üzerinde deneyelim. 2 değişken tanımlayalım sonrasında bu değişkenleri bir değişkende toplayalım ve hepsinin tipini terminale bastıralım.
Kodumuzu yazdıktan sonra istersek imlecimizin bulunduğu satırda Ctrl + Enter tuş kombinasyonu ile bulunduğumuz satırı çalıştırabiliriz. İstersek kodun çalıştırmak istediğimiz kısmını seçeriz çoklu kod satırlarını çalıştırabiliriz. Bunu istersek belirtilen tuş kombinasyonları ile istersek kod parçasını seçtikten sonra yukarıdan Run butonu ile kodu çalıştırabiliriz. Kodlarımız çalıştıktan sonra sağ taraftaki variables kısmında bizim görebilmemiz için tutulmaktadır. Alt taraftaki terminal ekranında ise çalışan kodun çıktısını görmekteyiz.
Belirtildiği üzere değişkenlerimiz double veri tipinde tanımlanmış bulunmaktadır.
Not: R studio kodlar arasındaki boşlukları umursamaz ve Key Sensitivity bir dildir. Büyük küçük harfe duyarlıdır. Tanımladığımız A değişkeni ve a değişkeni farklı olarak algılanacaktır.
Double tipinde değişken tanımlarken diğer yazılım dillerinin genelinde 1,5 gibi değerler verirken burada sadece 1 verirsek yukarıdaki resimde de gördüğünüz üzere 5 değerine sahip bir değişken tanımladığımda 5.0 olarak almaktadır.
Resimde işaretlediğim simgelere tıklayarak terminali ve values penceresinde bize gösterilen hafızada tutulan değişkenleri hafızadan temizliyorum.
Character tipinde bir değer tanımlamak istediğim zaman önce değişken adını sonra atama ifademi daha sonra ise içerisine gelecek değeri belirtiyorum.
Yukarıda bahsettiğimiz şekilde kodumuzu yazıp çalıştırdığımız zaman bize istediğimiz çıktıyı verecektir.
İki değişken tanımlayalım tipleri character olsun sonra bunları birleştirelim ve print() fonksiyonu ile yazdıralım. print() fonksiyonunu kullanmadan da ekrana çıktı bastırabiliyorduk. Bir tane daha değişken tanımlamamız gerekiyor bunun için sonrasında onun bulunduğu satırda kodu run etmemiz gerekiyor. print() fonksiyonu ile ise bir değişken ile uğraşmadan sadece çıktımızı üretmektedir.
Değişkenlerimi tanımladıktan sonra iki yöntem ile de çıktımızı bastıralım ve farkı görelim.
Farklarının daha rahat anlaşılması için renklendirdim. Kırmızı çerçevenin çıktısı kırmızı, mavi çerçevenin çıktısı mavi çerçeve içerisinde bulunmaktadır.
Döngüler
Temel veri tiplerinden bahsettikten sonra döngülerden bahsedelim.
İlk bahsetmek istediğim döngü While döngüsü.
While döngüsü nasıl çalışır; While döngüsü kendisine verilen koşul true olduğu müddetçe scope içerisinde verilen kodları çalıştırır. Koşul false döndüğü zaman ise döngü durur.
Not: F ve FALSE aynı şeyi ifade etmektedir. Aynı şekilde T ve TRUE aynı anlama gelmektedirler.
Döngümün koşul alanına F vererek kodu seçip çalıştırıyorum.
Burada işaretli olan alana dikkatinizi çekmek istiyorum. > işareti ile başlayıp + işareti ile devam etmekte. Console ekranımız burada bize kodun çalışmaya başladığı ve o kısma ait parçaların yani kodun devamının olduğunu belirtmektedir.
Bununla birlikte dikkatinizi çekmek istediğim bir diğer nokta kodun çalışması ve ekrana hiçbir çıktı basmamış olmasıydı. Eğer koşulum F yerine T olsaydı bana üreteceği çıktı print() fonksiyonuna yazdığım çıktı olacaktı. Bunun ile birlikte koşul hiçbir zaman F değerini almayacağı için sonsuz döngüye girecek ve devamlı çıktı basacaktı.
Not: Bu sonsuz döngüyü durdurmak için console ekranına tıklayıp ESC tuşuna basmanız yeterli olacaktır. Bu işlemi durduracaktır.
Nasıl çalıştığını öğrendikten sonra bir sayac ekleyelim ve T iken F'a düşen bir koşul almasını sağlayalım. Kodumuzu yazıyoruz.
Önce başlangıç değerimi belirleyen bir değişken tanımladım. Bu koşul 10'dan küçük oluncaya kadar döngünün devam etmesini istediğimi belirtmiş oldum. Her adımda arttığını belirtmek istiyorum bu yüzden print(sayac) şeklinde bunu ekrana bastırdım. En altta ise sayacımı, sayacımın o anki değerinin üzerine 1 ekleyerek arttırıyorum. Variables ekranında sayacımın 10 olduğu görünüyor, çıktımda ise 1'den 9'a kadar çıktımız bulunmakta. Bu, değerim 9'dan küçük olduğu sürece çalışır 10'a tamamlandığı zaman döngüden çıkar.
For döngüsü: Yine bir koşul ve gövdesi bulunmaktadır. Koşul T sonuç döndürdüğü sürece gövdesinde bulunan kodlarda dönecektir.
Bir for döngüsü yazalım, önce döngü adımı veriyorum. Sonra koşulumu belirtiyorum, ardından yapılmasını istediğim işlemleri yazıyorum.
Koşulun içerisinde görüldüğü üzere i değişkeni tanımlanmış. Dönüş adedini verirken in kullanılmış, sonunda 1:5 şeklinde bir ifade bulunmaktadır.
Nedir bu?
Eğer kodumuzun sadece 1:5 kısmını seçip kodu çalıştırırsak şu şekilde bir çıktı alırız;
1'den başlayıp kendileri de dahil olmak üzere 5'e kadar bizim için bir sayı dizisi oluşturdu. Sağ taraftaki variables ekranında da görüldüğü üzere i değişkenine 5L değeri atanmış bulunmakta, bu demek oluyor ki bize integer veri tipinde bir çıktı üretiyor.
Koşul İfadeleri
Koşul ifadeleri nedir?: Koşul ifadeleri, adı üzerinde verilen koşullar sağlandığı sürece çalışırlar.
if, else if ve else ifadelerini kullanacağız.
Öncelikle rnorm fonksiyonu ile bir adet random değer üretelim. Bu değeri bir değişkene atayalım. Bu değişkenin bulunduğu aralıktaki değerleri görelim, ve bunları kontrol edelim.Hem R dilini biraz daha tanımak hemde koşul ifadelerini uygulamak için böyle bir örnek yapalım.
rnorm() fonksiyonu parametre alır. Zaten bunu yazdığımız zaman bize şu şekilde bir pop-up çıkacaktır.
Ben parametre olarak sadece 1 gönderirsem bana bir adat random değer oluşturur. 5 sayısını parametre olarak gönderirsem eğer, bana 5 adet random değer oluşturur.
Örneğimize geçebiliriz artık.
Bu fonksiyon yardımıyla bir random değer oluşturup bir değişkene tanımlayacağım. Sonrasında bu değerin kaç ile kaç arasında olduğunu bulmak için koşul ifadelerimizi kullanacağım.
Ben kodu seçip ilk çalıştırmamda bana 1'den büyük bir değer üretti. Hem üretilen değeri variables ekranında görebiliriz. Hem de koşulumuz sağlandıktan sonra gövdenin çalıştığını variables ekranındaki cikti değişkeninin değerinide anlayabiliriz. Buna bir de else ekleyeceğiz çünkü her zaman 1'den büyük geleceği gibi bir garantimiz yok.
Not: Biz bu kodu tekrar çalıştırmak isyoruz fakat cikti değişkenini tanımlayıp tanımlamadığını görmek için hafızadan bunu rm() fonksiyonu ile temizlemeliyiz. Kodun en üstüne bunu ekliyoruz.
if ve else koşullarımızı kullandık. cikti değişkenimize değer atandığını gördük. Şimdi bir de else if koşulumuzu dahil edelim. rnorm() fonksiyonu bize -2 ve 2 aralığında bir değer üretmektedir. Şimdi tam kontrol sağlayalım.
Values ekranında görüldüğü üzere kodumuz beklediğimiz şekilde çalışmış bulunmaktadır.
Bölümde sizlerle paylaşacaklarım bu kadardı. Okuduğunuz için teşekkür eder, hepinize iyi forumlar dilerim.
Merhabalar, iyi forumlar herkese.
Yeterli miktarda Türkçe kaynak bulunmamasından ve forumda daha önce konusu açılmamış olması hasebiyle bu konuyu açma gereği duydum.
Bu seride R programlama dili nedir? Hangi amaçlarda kullanılır? Nasıl yüklenir? Nasıl çalışır gibi konulara değinmek istiyorum.
Konumuza geçelim.
R NEDİR?
R, yoğunlukla veri bilimciler tarafından kullanılan bir yazılım dilidir.
Veri modelleme, veri analizi gibi alanlarda bize kolaylıklar sağlar. R dili, geniş bir döküman desteğine sahiptir. 2 milyondan fazla kullanıcı olduğu bilinmektedir. İhtiyaçlara hızlı bir şekilde cevap verebilmesi ile bilinir. Bunun ile birlikte R, kullanıcı ihtiyacına göre pakat geliştirilmesi konusunda da olanaklar tanır.
R dili, Ross Ihaka ve Robert Gentlemen tarafından S dilinin uyarlaması olarak 1991 yılında ortaya çıkmıştır.
Neden Python Kütüphaneleri dururken R?
Bu soruyu şu şekilde kısaca cevaplamak yerinde olacaktır. Python Nesne Tabanlı Programlamaya yönelik bir dildir. R dilinde durum böyle değildir. Bunun ile birlikte R detaylı şekilde veri analizi için kullanılmaktadır. Bir firmaya bu şekilde bir detaylı rapor sunulacak ise eğer bunun için R tercih edilmesi mantıklı bir dildir. Eğer ben Neural Network geliştireceğim sıfırdan yapay zeka kodlayacğım tarzında bir hedefiniz var ise Python'a yönelmeniz mantıklı olacaktır. Yukarıda belirttiğimiz gibi R dili veri bilimi için kullanılmaktadır. Bunun için içerisinde yeri geldiğinde değineceğimiz veri analizi için hazır olarak gelen fonksiyonları mevcuttur. Daha detaylı bilgi için;[ame="https://www.youtube.com/watch?v=wKyYkeXZqd0&list=PLZrZMDJ_v_bE-kK9S2OB7XfpL9AUvN1-g&index=6&t"]video[/ame]
NASIL İNDİRİLİR HANGİ ORTAMLARDA KOD YAZILIR?
R dilini bilgisayarımızda çalıştırabilmemiz için önce buradan R'ı, daha sonra buradan bu dil için uygun bir IDE olan RStudio'yu indirmeliyiz.
Desktop Free Versiyonu indirebiliriz.
R yüklendikten sonra açılış ekranı aşağıdaki şekilde olacaktır;
RStudio yüklendikten sonra açılış ekranı aşağıdaki şekilde olacaktır;
Ben göz yormaması için temasını Tools > Global Options > Appearance kısmından değiştiriyorum.
Daha sonrasında her programlama dilinin başlangıcında bulunan adet üzere hello world yazdıralım ekrana.
Görselde belirttiğim alandan scriptlerimizi yazacağımız alanı açıyoruz.
Daha sonrasında,
Kod:
'hello world'
Hello world yazdıktan ve kodlarımızı nasıl çalıştırabileceğimizi öğrendikten sonra, değişken tanımlamalarına ve veri tiplerine geçelim.
DEĞİŞKEN NASIL TANIMLANIR?
R dilinin atama operatörü şu şekildedir.
Kod:
<-
Bir değişkene int tipinde bir değer atamak istediğim zaman,
Kod:
[değişkenadı] <- [değer]L
Örnek üzerinde deneyelim. 2 değişken tanımlayalım sonrasında bu değişkenleri bir değişkende toplayalım ve hepsinin tipini terminale bastıralım.
Kodumuzu yazdıktan sonra istersek imlecimizin bulunduğu satırda Ctrl + Enter tuş kombinasyonu ile bulunduğumuz satırı çalıştırabiliriz. İstersek kodun çalıştırmak istediğimiz kısmını seçeriz çoklu kod satırlarını çalıştırabiliriz. Bunu istersek belirtilen tuş kombinasyonları ile istersek kod parçasını seçtikten sonra yukarıdan Run butonu ile kodu çalıştırabiliriz. Kodlarımız çalıştıktan sonra sağ taraftaki variables kısmında bizim görebilmemiz için tutulmaktadır. Alt taraftaki terminal ekranında ise çalışan kodun çıktısını görmekteyiz.
Belirtildiği üzere değişkenlerimiz double veri tipinde tanımlanmış bulunmaktadır.
Not: R studio kodlar arasındaki boşlukları umursamaz ve Key Sensitivity bir dildir. Büyük küçük harfe duyarlıdır. Tanımladığımız A değişkeni ve a değişkeni farklı olarak algılanacaktır.
Double tipinde değişken tanımlarken diğer yazılım dillerinin genelinde 1,5 gibi değerler verirken burada sadece 1 verirsek yukarıdaki resimde de gördüğünüz üzere 5 değerine sahip bir değişken tanımladığımda 5.0 olarak almaktadır.
Resimde işaretlediğim simgelere tıklayarak terminali ve values penceresinde bize gösterilen hafızada tutulan değişkenleri hafızadan temizliyorum.
Character tipinde bir değer tanımlamak istediğim zaman önce değişken adını sonra atama ifademi daha sonra ise içerisine gelecek değeri belirtiyorum.
Yukarıda bahsettiğimiz şekilde kodumuzu yazıp çalıştırdığımız zaman bize istediğimiz çıktıyı verecektir.
İki değişken tanımlayalım tipleri character olsun sonra bunları birleştirelim ve print() fonksiyonu ile yazdıralım. print() fonksiyonunu kullanmadan da ekrana çıktı bastırabiliyorduk. Bir tane daha değişken tanımlamamız gerekiyor bunun için sonrasında onun bulunduğu satırda kodu run etmemiz gerekiyor. print() fonksiyonu ile ise bir değişken ile uğraşmadan sadece çıktımızı üretmektedir.
Değişkenlerimi tanımladıktan sonra iki yöntem ile de çıktımızı bastıralım ve farkı görelim.
Farklarının daha rahat anlaşılması için renklendirdim. Kırmızı çerçevenin çıktısı kırmızı, mavi çerçevenin çıktısı mavi çerçeve içerisinde bulunmaktadır.
Döngüler
Temel veri tiplerinden bahsettikten sonra döngülerden bahsedelim.
İlk bahsetmek istediğim döngü While döngüsü.
While döngüsü nasıl çalışır; While döngüsü kendisine verilen koşul true olduğu müddetçe scope içerisinde verilen kodları çalıştırır. Koşul false döndüğü zaman ise döngü durur.
Kod:
while(F){
print("Döngü içerisindeki işlemler...")
}
Not: F ve FALSE aynı şeyi ifade etmektedir. Aynı şekilde T ve TRUE aynı anlama gelmektedirler.
Döngümün koşul alanına F vererek kodu seçip çalıştırıyorum.
Burada işaretli olan alana dikkatinizi çekmek istiyorum. > işareti ile başlayıp + işareti ile devam etmekte. Console ekranımız burada bize kodun çalışmaya başladığı ve o kısma ait parçaların yani kodun devamının olduğunu belirtmektedir.
Bununla birlikte dikkatinizi çekmek istediğim bir diğer nokta kodun çalışması ve ekrana hiçbir çıktı basmamış olmasıydı. Eğer koşulum F yerine T olsaydı bana üreteceği çıktı print() fonksiyonuna yazdığım çıktı olacaktı. Bunun ile birlikte koşul hiçbir zaman F değerini almayacağı için sonsuz döngüye girecek ve devamlı çıktı basacaktı.
Not: Bu sonsuz döngüyü durdurmak için console ekranına tıklayıp ESC tuşuna basmanız yeterli olacaktır. Bu işlemi durduracaktır.
Nasıl çalıştığını öğrendikten sonra bir sayac ekleyelim ve T iken F'a düşen bir koşul almasını sağlayalım. Kodumuzu yazıyoruz.
Önce başlangıç değerimi belirleyen bir değişken tanımladım. Bu koşul 10'dan küçük oluncaya kadar döngünün devam etmesini istediğimi belirtmiş oldum. Her adımda arttığını belirtmek istiyorum bu yüzden print(sayac) şeklinde bunu ekrana bastırdım. En altta ise sayacımı, sayacımın o anki değerinin üzerine 1 ekleyerek arttırıyorum. Variables ekranında sayacımın 10 olduğu görünüyor, çıktımda ise 1'den 9'a kadar çıktımız bulunmakta. Bu, değerim 9'dan küçük olduğu sürece çalışır 10'a tamamlandığı zaman döngüden çıkar.
For döngüsü: Yine bir koşul ve gövdesi bulunmaktadır. Koşul T sonuç döndürdüğü sürece gövdesinde bulunan kodlarda dönecektir.
Bir for döngüsü yazalım, önce döngü adımı veriyorum. Sonra koşulumu belirtiyorum, ardından yapılmasını istediğim işlemleri yazıyorum.
Koşulun içerisinde görüldüğü üzere i değişkeni tanımlanmış. Dönüş adedini verirken in kullanılmış, sonunda 1:5 şeklinde bir ifade bulunmaktadır.
Nedir bu?
Eğer kodumuzun sadece 1:5 kısmını seçip kodu çalıştırırsak şu şekilde bir çıktı alırız;
1'den başlayıp kendileri de dahil olmak üzere 5'e kadar bizim için bir sayı dizisi oluşturdu. Sağ taraftaki variables ekranında da görüldüğü üzere i değişkenine 5L değeri atanmış bulunmakta, bu demek oluyor ki bize integer veri tipinde bir çıktı üretiyor.
Koşul İfadeleri
Koşul ifadeleri nedir?: Koşul ifadeleri, adı üzerinde verilen koşullar sağlandığı sürece çalışırlar.
if, else if ve else ifadelerini kullanacağız.
Öncelikle rnorm fonksiyonu ile bir adet random değer üretelim. Bu değeri bir değişkene atayalım. Bu değişkenin bulunduğu aralıktaki değerleri görelim, ve bunları kontrol edelim.Hem R dilini biraz daha tanımak hemde koşul ifadelerini uygulamak için böyle bir örnek yapalım.
rnorm() fonksiyonu parametre alır. Zaten bunu yazdığımız zaman bize şu şekilde bir pop-up çıkacaktır.
Ben parametre olarak sadece 1 gönderirsem bana bir adat random değer oluşturur. 5 sayısını parametre olarak gönderirsem eğer, bana 5 adet random değer oluşturur.
Örneğimize geçebiliriz artık.
Bu fonksiyon yardımıyla bir random değer oluşturup bir değişkene tanımlayacağım. Sonrasında bu değerin kaç ile kaç arasında olduğunu bulmak için koşul ifadelerimizi kullanacağım.
Ben kodu seçip ilk çalıştırmamda bana 1'den büyük bir değer üretti. Hem üretilen değeri variables ekranında görebiliriz. Hem de koşulumuz sağlandıktan sonra gövdenin çalıştığını variables ekranındaki cikti değişkeninin değerinide anlayabiliriz. Buna bir de else ekleyeceğiz çünkü her zaman 1'den büyük geleceği gibi bir garantimiz yok.
Not: Biz bu kodu tekrar çalıştırmak isyoruz fakat cikti değişkenini tanımlayıp tanımlamadığını görmek için hafızadan bunu rm() fonksiyonu ile temizlemeliyiz. Kodun en üstüne bunu ekliyoruz.
if ve else koşullarımızı kullandık. cikti değişkenimize değer atandığını gördük. Şimdi bir de else if koşulumuzu dahil edelim. rnorm() fonksiyonu bize -2 ve 2 aralığında bir değer üretmektedir. Şimdi tam kontrol sağlayalım.
Values ekranında görüldüğü üzere kodumuz beklediğimiz şekilde çalışmış bulunmaktadır.
Bölümde sizlerle paylaşacaklarım bu kadardı. Okuduğunuz için teşekkür eder, hepinize iyi forumlar dilerim.
Son düzenleme: