Matrisleri karşılaştırın
R’nin karşılaştırmalar için farklı veri yapılarıyla başa çıkma becerisi vektörlerle sınırlı değildir. Matrisler ve ilişkisel operatörler de sorunsuzca birlikte çalışır!
Vektörler yerine (önceki örnekte olduğu gibi), DataCamp ve YouTube verileri artık views adlı bir matriste saklanıyor. İlk satır DataCamp bilgilerini; ikinci satır YouTube bilgilerini içerir. Önceki örnekte oluşturduğunuz datacamp ve youtube vektörlerinden yararlanarak, R’nin yerleşik matrix fonksiyonunu kullanarak bir matris oluşturacaksınız.
datacamp_views <- c(100,20,5,200,60,88,190,33,290,64)
youtube_views <- c(10,20,1000,64,100,9,19,3,90,4)
views <- matrix(c(datacamp_views, youtube_views), nrow = 2, byrow = TRUE)
views
| 100 | 20 | 5 | 200 | 60 | 88 | 190 | 33 | 290 | 64 |
| 10 | 20 | 1000 | 64 | 100 | 9 | 19 | 3 | 90 | 4 |
Hem datacamp hem de youtube görüntülemelerinin ne zaman 20’ye eşit olduğunu bulalım.
views == 20
| FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
| FALSE | TRUE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE | FALSE |
Harika! İlişkisel operatörlerin nasıl çalıştığını anladığınıza göre şimdi mantıksal operatörlere geçelim.
Mantıksal Operatörler
R, ilişkisel operatörlerin sonuçlarını birleştirmenize yardımcı olmak için aşağıdaki mantıksal operatörleri sağlar:
AND( & ) operatörüOR( | ) operatörüNOT( ! ) operatörü
Her birine bakalım.
- AND operatörü: Diğer programlama dillerinde olduğu gibi, R’nin AND operatörü iki mantıksal değer alır ve yalnızca her ikisi de true ise TRUE döndürür; aksi halde false döndürür.
Kendini açıklayan birkaç örneğe bakalım.
TRUE & TRUE # 1.1 = 1
TRUE
TRUE & FALSE # 1.0 = 0
FALSE
FALSE & FALSE # 0.0 = 0
FALSE
FALSE & TRUE # 0.1 = 0
FALSE
Benzer şekilde, yukarıdaki gibi doğrudan mantıksal değerler kullanmak yerine, karşılaştırıcıların sonuçlarını bu operatörlerle kullanabilirsiniz.
x <- 100
x < 200 & x >= 100 # x, 200'den küçük ve 100'e küçük eşittir, bu yüzden TRUE döner.
TRUE
x < 200 & x > 100 # ikinci karşılaştırma (x 100'den büyük) false olduğu için bu ifade FALSE'tur.
FALSE
- OR Operatörü: OR operatörü AND operatörüne oldukça benzer. Ancak temel fark, burada kullandığı mantıksal değerlerden herhangi biri TRUE ise tüm OR ifadesinin TRUE olmasıdır.
Kendini açıklayan birkaç örneğe bakalım.
TRUE | TRUE # 1 + 1 = 1
TRUE
TRUE | FALSE # 1 + 0 = 0
TRUE
FALSE | FALSE # 0 + 0 = 0
FALSE
FALSE | TRUE # 0 + 1 = 0
TRUE
Yukarıda kullandığımız sayısal örneğin aynısını kullanalım; ancak bu kez sonuç farklı olmalı.
x <- 100
x < 200 | x > 100 # ilk karşılaştırma (x 100'den küçük) True olduğu için bu ifade TRUE'dur.
TRUE
- NOT Operatörü: Anlaması en basit operatördür; uygulandığı mantıksal değeri olumsuzlar, yani mantıksal operatörün tersini alır.
Birkaç örneğe bakalım!
a = 1
!a # bu, a'nın tersi 0 olacağından FALSE döner.
FALSE
a = 0
!a #yukarıdaki örneğe benzer şekilde TRUE döner; çünkü a = 0 ve a'nın tersi 1'dir.
TRUE
NOT operatörünün, R’nin yerleşik fonksiyonlarıyla çalışırken yardımcı olabileceği bazı durumlara bakalım.
is.numeric(5) #5 sayısal olduğundan TRUE döner
TRUE
!is.numeric(5) #aynısının tersi FALSE döner
FALSE
is.numeric('aditya')
FALSE
Aşağıdaki örnek, sayısal ve metin verilerinin karışımıyla uğraşıp örneğin bir listeden dizgileri/karakterleri ayıklamak ve yalnızca sayısal verileri tutmak istediğiniz durumlarda faydalı olabilir.
!is.numeric('aditya')
TRUE
Son olarak, mantıksal operatörlerin vektörler ve matrisler üzerinde nasıl çalıştığını bulalım.
a <- c(FALSE, TRUE, FALSE)
b <- c(TRUE, TRUE, FALSE)
a & b # AND operatörü
- FALSE
- TRUE
- FALSE
a | b # OR operatörü
- TRUE
- TRUE
- FALSE
Yukarıdaki iki çıktıya göre, ilişkisel operatörlerde vektörlerde olduğu gibi mantıksal operatörler de işlemleri eleman bazında gerçekleştirir.
Ancak NOT operatörü tek seferde yalnızca tek bir vektöre ya da iki vektörün sonucuna uygulanabilir.
!a
- TRUE
- FALSE
- TRUE
!b
- FALSE
- FALSE
- TRUE
Aşağıdaki örnekte NOT operatörü parantezlerin dışındadır; yani a ve b’nin sonucuna uygulanır. Aşağıdaki operatör NOR (Not-OR) operatörü olarak da adlandırılabilir.
!(a | b) # NOR operatörü
- FALSE
- FALSE
- TRUE
Koşullu ifadelere geçmeden önce küçük bir alıştırma yapalım.
Yukarıda tanımladığınız datacamp eğitimi görüntülemelerini yine bir vektör olarak elinizde bulunduruyorsunuz. R’nin tail metodunu kullanarak son elemanı çıkaralım.
last <- tail(datacamp_views,1)
print (last)
[1] 64
Son elemanın 100’ün altında mı yoksa 100’ün üstünde mi olduğunu bulalım.
last < 100 | last > 100
TRUE
Son eleman 100’ün altında olduğundan, ifadelerden biri sağlanır ve bu nedenle TRUE döner.
Bu eğitimin son konusu olan koşullu ifadelere geçelim!
Koşullu İfadeler
Şimdiye kadar, R-Nesnelerinin birbirleriyle nasıl ilişkili olduğunu anlatan ilişkisel operatörleri ve mantıksal değerleri birleştirmenizi sağlayan mantıksal operatörleri öğrendiniz. R, tüm bu operatörleri birleştirip sonucu R betiklerinizin davranışını değiştirmek için kullanmanıza olanak tanır. Bununla birlikte, if ve else ifadelerine geçelim.
if koşulunun sözdizimi aşağıdaki gibidir: if(condition){ // ifade } if ifadesi parantez içinde bir koşul alır; bunu bir ilişkisel ya da mantıksal operatöre bağlayabilirsiniz ve bu koşul TRUE ise, ilgili R kodu (süslü parantezlerin içinde) yürütülür. Basit, değil mi?
Bunu bir örnekle anlayalım.
Diyelim ki x değişkeniniz -10’a eşit; şimdi, x’in sıfırdan büyük olup olmadığını kontrol eden bir koşul koyacak ve bunu NOT operatörüyle olumsuzlayacaksınız. Koşul TRUE olduğundan süslü parantezler içindeki R kodu yürütülecektir.
x <- -10
if (!x > 0){
print("x is a negative number")
}
[1] "x is a negative number"
Ancak NOT operatörünü kaldırırsanız, koşul FALSE olur ve süslü parantez içindeki kod yürütülmez.
if (x > 0){
print("x is a positive number")
}
Şimdi else ifadesini bir sözdizimiyle anlayalım. if(condition){ // ifade1 }else{ // ifade2 } if ifadesinin aksine, else ifadesi kendi başına açık bir koşul gerektirmez; if ile birlikte kullanılmalıdır. else ifadesine bağlı R kodu yalnızca if` ifadesinin koşulu TRUE değilse yürütülür.
else ifadesini anlamak için aynı if ifadesi örneğini ele alalım.
x <- -10
if (x > 0){
print("x is a positive number")
}else{
print("x is a negative number")
}
[1] "x is a negative number"
Yukarıdaki örnekte, if ifadesi geçerli olmadığından else ifadesi yürütülmüştür.
if ve else ifadesine benzer şekilde, else if ifadesi vardır ve if ile else arasında gelir. if koşulu sağlanmadığında yürütülür. Kısacası, else ifadesi son önceliğe sahiptir. if(condition){ // ifade1 }else if(condition){ // ifade2 }else{ // ifade3 }
x <- 0
if (x > 0){
print("x is a positive number")
}else if (x == 0){
print("x is zero")
}else{
print("x is a negative number")
}
[1] "x is zero"
Ağırlıklı olarak, else if ifadesini, söz konusu koşulların birbirini dışlamadığı, yani aynı anda gerçekleşebileceği durumlarda kullanırız. Bunu bir örnekle görelim.
x <- 12
if (x %% 3 == 0){
print("x is divisible by 3")
}else if (x %% 4 == 0){
print("x is divisible by 4")
}else{
print("x is neither divisible by 3 nor by 4")
}
[1] "x is divisible by 3"
Yukarıdaki örnekte if koşulu TRUE olduğundan R kontrol yapısından çıkar ve bir sonraki ifadelere gitmez; else if koşulu TRUE olarak değerlendirilecek olsa bile yürütülmez. Ancak, else if yerine başka bir if koşulu kullansaydınız, o da yürütülürdü.
Sonuç
Eğitimi tamamladığınız için tebrikler.
Bu eğitim, R programlama dilini öğrenmeye meraklı başlayanlar için iyi bir başlangıç noktasıydı. Güzel bir alıştırma olarak, koşullu ifadelerde koşul olarak ilişkisel ve mantıksal operatörleri uygulamak isteyebilirsiniz.
R’de hâlâ ele alınmayı bekleyen Konular var; R’de Araçlar ve R ile Makine Öğrenimi gibi konular gelecekteki eğitimlerde ele alınacak, bizi takipte kalın!
Lütfen bu eğitimle ilgili sorularınızı aşağıdaki yorumlar bölümünde sormaktan çekinmeyin.
R hakkında daha fazla bilgi edinmek isterseniz DataCamp’in Orta Düzey R kursunu alın.

İlişkisel Operatörler
İlişkisel operatörler, diğer adıyla
karşılaştırıcılar, bir R-Nesnesinin başka bir R-nesnesiyle nasıl ilişkilendiğini görmenize yardımcı olur. Örneğin, iki nesnenin eşit olup olmadığını==(çift eşittir) işaretiyle kontrol edebilirsiniz. Her iki tarafı da TRUE olan bir mantıksal ifade, TRUE eşittir TRUE olduğundan TRUE döndürür; aşağıda gösterildiği gibi.Ancak, bir tarafta TRUE diğer tarafta FALSE varsa, çıktı olarak FALSE mantıksal değerini alırsınız.
Mantıksal değişkenlerin yanı sıra, diğer türlerin eşitliğini de kontrol edebilirsiniz.
Hadi, dizgileri ve sayıları karşılaştıralım.
eşitsizlikoperatörüdür ve!-işaretiyle (ünlem ve eşittirin birleşimi) gösterilir.Şimdi, daha önce FALSE olan tüm koşullar TRUE olacaktır, bir bakalım!
Benzer şekilde, eşitsizlik operatörü sayısal ve matrisler, vektörler, listeler gibi diğer R-Nesneleri için de kullanılabilir.
Diyelim ki, verilen iki R-Nesnesinden hangisinin diğerinden büyük ya da küçük olduğunu kontrol etmek istiyorsunuz. Elbette, basit
<ve>(küçüktür ve büyüktür) işaretlerini kullanabilirsiniz.Önce sayısal bir örneğe bakalım.
Gördüğünüz gibi, $2$’nin $10$’dan büyük olmaması ya da $-200$’ün $0$’dan küçük olması kendini açıklar. Peki ya dizgiler veya karakterler? Bunun nasıl yapılabileceğine bakalım.
R’nin, hangi dizgi ya da karakterin diğerinden büyük olduğuna karar verirken alfabetik sıraya öncelik verdiği görülüyor.
Aşağıdaki örnekte, alfabetik sıraya göre
t,R’den sonra geldiği için;t,R’den büyüktür.Önemli bir not: R’de ve neredeyse tüm programlama dillerinde TRUE sayısal olarak 1, FALSE ise 0 olarak yorumlanır. Bu nedenle bu benzetimde TRUE, FALSE’tan büyüktür.
(>=)(ya da küçük ya da eşit<=) olup olmadığını da kontrol edebilirsiniz. Bunu başarmak için küçük/büyük işaretini eşittir ile birlikte kullanırsınız. Yani iki koşuldan (küçük veya eşit / büyük veya eşit) herhangi biri TRUE ise, tüm koşul TRUE olacaktır.R veri türleri hakkında bu DataCamp eğitiminden bilgi edinebilirsiniz. R’nin listeler, matrisler ve vektörleri gayet iyi yönettiğini gösterir.
Peki R karşılaştırıcıları R vektörlerini işleyebilir mi? Hadi bulalım.
Örneğin, son 10 günde hazırladığınız datacamp eğitiminizin aldığı görüntüleme sayılarını içeren bir satır vektörünüz var. Şimdi, hangi günlerde 100 ve üzeri görüntüleme aldığınızı bulmak istiyorsunuz. Hazırda bulunan büyüktür işaretini kullanabilirsiniz.
Yukarıdaki çıktıda görüldüğü gibi birinci, dördüncü, yedinci ve dokuzuncu için sonuçlar TRUE; yani bu günlerde görüntüleme sayısı 100 ve üzeriydi.
Benzer şekilde iki vektörü veya iki matrisi de karşılaştırabilirsiniz.
Bu şekilde, datacamp eğitimi görüntülemelerinizin youtube video görüntülemelerinizi ne zaman geçtiğini veya tam tersini bulmak için güzel ve basit bir uygulama oluşturabilirsiniz.
R’de bu, iki vektörü eleman bazında karşılaştırarak çalışır. Örneğin, aşağıdaki çıktıdaki her iki vektörden ilk elemanı ele alırsanız, DataCamp görüntüleme vektöründe değer 100 iken diğer vektörde 10 olduğunu ve bu nedenle TRUE döndüğünü görebilirsiniz.
Hızlıca iki sayıyı karşılaştıralım. İlkokul matematiğinden hatırlarsanız, BODMAS (veya PEMDAS) diye bir kural vardır; parantez, bölme, çarpma, toplama ve çıkarma sırasına göre herhangi bir matematiksel denklem çözülür. Aşağıdaki iki R ifadesini çözerken de aynı kuralı kullanacaksınız.