R dili /Fundamentals Of R #Part 2

Codx

Katılımcı Üye
30 Tem 2017
309
1

Merhabalar iyi forumlar herkese,

R dili serimizin 2. Kısmı ile devam ediyoruz. Başlayalım

Vektörler
Vektörler bizim diğer programlama dillerinde array olarak adlandırdığımız. Dizi şeklinde veri yapılarıdır.

Burada farklılık olarak söyleyebileceğimiz şey programlama dillerinde index numarası saymaya sıfırdan başlanırken, R dilinde bu dilin istatistiksel bir amaç uğruna piyasaya sürülmesi sebebiyle 1'den başlaması olacaktır.

Örnek görselde görmüş olduğumuz şey bir vektördür. Vektörler her zaman aynı tipte verileri içerisinde barındırmak zorundadır.
[1] "7"
[2] "a"
[3] "2c"
[4] "T"
[5] "F"
[6] "n"
[7] "j"

Bu ise bir character vektörüdür. Eğer ben 3. Sıradaki indexe "7" yazarak bunun character veri tipinde olduğunu belirtmeseydim, o zaman R bunu benim için character tipine dönüştürecektir.

Diğer dillerden de örnekler veriyorken şunu da belirtelim. Bir dilde string bir veri tanımladığında aslında bu veri bir string değil char dizisidir, ve value tip gibi davranan referans tip bir değişkendir.

R dilinde her character yada sayı tek başına tanımlandığında arka planda bir vektör şeklinde indexlenerek çalışmaktadır. Yani bu bizim z <- 10 şeklinde tanımladığımız bir numerik değer arka planda bir vektör şeklinde tutulur.

R Studio'yu açalım ve biraz alıştırma yapalım.

Vektörüme bir isim veriyorum c() (combine) fonksiyonu ile bunu bir vektör olarak hafızada tutuyorum. Sonrasında bunu ctrl + enter tuşları ile çalıştırıyorum.



Altı mavi çizili olan yer vektör adım, kırmızı çizili olan yer vektör tipim, sarı çizili olan yer vektör uzunluğum, yeşil çizili olan yer vektör içeriğim.

Sağ taraftaki ekranda bunun numeric bir değer olduğunu görebiliyorum. Peki bana numeric derken neyi kast ediyor tam olarak?

is.numeric(MyFirstVektor) yazıp çalıştırırsam bana true çıktısını verir. Peki bu integer mi, yoksa double mı?



Söylediğimiz gibi is.numeric() true dönüyor. Fakat biz bunları integer olarak hafızada tutmuyoruz. Bu vektör şuan hafızada double tipinde tutuluyor.

Bunları integer tipinde tutmak istersek eğer önceki parttan öğrendiğimiz şekilde bir tam sayı olduklarını belirtmek için sonuna L harfi koyarak oluşturmalıyız.



Bir de character tipinde bir vektör tanımlayalım. İçeriğin tamamı çift tırnak içerisinde yazılmaktadır bu durumda. Eğer içerisinde bir sayı tutmak isteyipte bunu character tipinde değilde numeric tipteymiş gibi yazarsak, yani başına ve sonuna çift tırnak koymazsak R bunu otomatik olarak character tipine dönüştürecektir.



Vektörler hakkında konuşacağımız bir başka konu [ ] sembollerinin kullanımı.

Vektörün belirtilen indexine ulaşmamızı sağlamaktadırlar. Örneğin bir değişken tanımlayıp c() fonksiyonu ile bir vektör oluşturup içerisine data atalım. Sonra ikinci indexteki değere ulaşalım.

Bunun için önce vektörümüzü oluşturucaz sonra vektör adını verip [index numarası] şeklinde kullanmalıyız.



İki numaralı indexi ekrana bastırdık. İkinci indexten gelen değer 4 çünkü R saymaya 0'dan değil 1'den başlar.

Aynı konuyu farklı bir fonsiyonda görelim. seq() fonksiyonu, sequence'den gelir. İki yada üç paremetre alır. Şöyle ki eğer sadece iki parametre alırsa ilk sayıdan ikinci sayıya kadar birer birer artarak devam eder. Üçüncü bir parametre alırsa o zaman o parametre sayısınca artarak ilerler. Örnek üzerinde gösterecek olursak;



Şimdi bunları bir değişkene alıp [ ] sembollerinden bahsetmeye devam edelim.

Bir vektörün içerisinden bir kısmı hariç olarak da alabiliriz. Şöyle ki ben eğer x vektöründeki 4.cü indexdeki değer hariç hepsini istersem x[-4] şeklinde bunu belirtebilirim.

Örnek için seq() fonksiyonundan ürettiğimiz 1'den 10'a kadar olan çıktıyı x değişkenine c() fonksiyonu ile atıyorum. Sonrasında bu vektörden 4.cü index haric hepsini ekrana bastırmak için x[-4] yazıp kodu ctrl + enter ile çalıştırıyorum.



Şimdi bir character vektörü oluşturalım, oluşturduğumuz bu vektör üzerinde c() fonksiyonu ile bir vektör göndererek bunlara denk gelen indexleri ekrana bastıralım.



character vektörüm için bir y değişkeni index numaralarım için bir y1 değişkeni oluşturdum. y[1, 2, 3] yerine y[y1] yazarak oluşturduğum vektörü oraya çağırdım ve çalıştırınca bu şekilde bir çıktı üretti.

Eğer - işareti ile oluştursaydım o zaman bu 3 index olmadan diğer değerleri dönecekti.

Belli bir aralığı da [ ] işaretleri ile ekrana bastırabiliriz. R 1:4 yazıp çalıştırınca bize 1, 2, 3, 4 sonucunu döndürüyordu bunu burada kullanıyoruz. Şöyle;



Peki biraz da bu vektörlerin öneminden, bazı ayrıntılarından bahsedelim.

R dili python varken neden tercih sebebi olsun ki? Demiştik. Cevap ise hazır fonksiyonuları ve sunduğu kısa yollardı.
(Şahsi görüşüm tabi ki en iyi yolun bildiğimiz yol olduğu, ama konu teknoloji olduğu zaman yeniliklere açık da olmalıyız.)

Eğer aynı uzunlukta iki numeric vektörü toplamak isterseniz, R her vektörü karşılıklı gelen elementleri toplar şu şekilde gösterelim;

x ve y olmak üzere iki adet vektör oluşturuyorum, sonra bunların toplamını ekrana bastırıyorum. Oluşturduktan sonra istediğiniz şekilde bastırabilirsiniz, ben şimdilik iki farklı şekilde yapıyorum.



Bu iki vektör de numeric tipte vektörlerdi, ve uzunlukları aynıydı. Eğer birisi diğerinin yarısı kadar olursa o zaman R bu yarısı kadar olan vektörü ikiye katlar. Ne demek istiyorum;

Kod:
x <- c(1,1)
y <- c(1,1,1,1)
Şeklinde iki adet vektör oluşturuyorum. Şimdi bunların toplamını ekrana bastırıyorum.



çıktımız resimdeki gibi oldu.

Bu örnekte biri diğerinin yarısı uzunluğundaydı. Peki tam olarak yarısı kadar olmaz ise?



Bu durumda, bu şekilde bir hata ile karşılaşacağız.

Bu konuda anlatacaklarım bu kadardı, okuduğunuz için teşekkür eder iyi forumlar dilerim.

 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.