Bu sayfada “R Yazılımına Giriş” dersinde ödev olarak verilen alıştırmalar ile cevapları paylaşılacaktır.
Kullanıcı tarafından girilecek bir harfle baslayan nesneleri cagırcak bir fonksiyon yazınız.
nesnegetir<-function() {
nesne<-readline(prompt = "cagirmak istediginiz nesnenin ilk harfini giriniz: ")
nesne<-as.character(nesne)
harf<-paste(ls(pattern=paste("^",nesne,sep=""), envir=.GlobalEnv))
print(harf)
}
Not: istenilen nesnelerinin cagrillabilmesi icin fonksiyon nesnelerini envir=.GlobalEnv ile calisma alani ortamina tasimis olduk
R’da tanimli olan LETTERS nesnesinden faydalanarak Turkce Alfabeyi hazirlayiniz.
TRalfabe<-append(LETTERS,"Ç",3)
TRalfabe<-append(TRalfabe,"Ğ",8)
TRalfabe<-append(TRalfabe,"İ",11)
TRalfabe<-append(TRalfabe,"Ö",18)
TRalfabe<-append(TRalfabe,"Ş",23)
TRalfabe<-append(TRalfabe,"Ü",26)
TRalfabe<-TRalfabe[-c(21,29,30)]
Birden n’e kadar olan sayilarin toplamini hesaplayan fonksiyon yazimi. toplam() tek argumanli fonksiyon olsurunuz. Arguman degeri 5 oldugunda 1+2+3+4+5=15 degerini versin.
toplam<-function() {
sayi1<-readline(prompt = "sayiyi giriniz: ")
sayi1<-as.integer(sayi1)
sayi2<-1:sayi1
x<-length(sayi2)
tdegeri<-paste("1'den girdiginiz sayiya kadar olan sayilarin toplam degeri: ",
(x*(x+1))/2)
print(tdegeri)
}
Yazilan kare_toplam() fonksiyonu 1’den n’e kadar olan sayilarin karelerinin toplamini versin. Not: KT=(n(n+1)(2n+1))/6
ktop<-function() {
sayi1<-readline(prompt = "sayiyi giriniz: ")
sayi1<-as.integer(sayi1)
sayi2<-1:sayi1
x<-length(sayi2)
KT<-paste("1'den girdiginiz sayiya kadar olan sayilarin kareler toplami: ",
(x*(x+1)*(2*x+1)/6))
print(KT)
}
Elinizde bulunan asagida yer alan ad_soyad nesnesini kullanarak asagidaki ciktiyi olusturmaya calisiniz.
ad_soyad<- c("Ayse-Sel","Can-Yucel","Cem-Togay","Banu-Cift")
##[1] "Ayse-Sel" "Can-Yucel" "Cem-Togay" "Banu-Cift"
##[1] "Ayse" "Can" "Cem" "Banu"
##[1] "Sel" "Yucel" "Togay" "Cift"
coz<-function(x) {
yeni<-matrix(unlist(strsplit(x, "[-]")),length(x),2,TRUE)
print(yeni[,1])
print(yeni[,2])
}
islem adinda iki argumanli bir fonksiyon yaziniz. Yazdiginiz fonksiyon girilen iki degerin toplamini, farkini, carpimini ve bolumunu versin. Yazdiginiz #fonksiyonun asagidaki ciktilari vermesi beklenmektedir.
##[1] 4.0000000 -2.0000000 3.0000000 0.3333333
islem<-function() {
a<-readline(prompt = "Birinci sayiyi giriniz: ")
b<-readline(prompt = "ikinci sayiyi giriniz: ")
a<-as.double(a)
b<-as.double(b)
sonuc<- paste(c(a+b,a-b,a*b, a/b))
print(sonuc)
}
Sırayla degisken adları TamSayi, OndalikSayi, Karakter, Mantiksal, Faktor olan 5 değişkenli hiçbir gözlemi olmayan bir data.frame oluşturmanızı ve bu data.framenin yapısını yazdırmanızı bekliyorum. Beklenen çıktı aşağıdaki gibi olmalıdır.
## [1] "Bos data.framenin yapısı:"
## 'data.frame': 0 obs. of 5 variables:
## $ TamSayi : int
## $ OndalikSayi: num
## $ Karakter : chr
## $ Mantiksal : logi
## $ Faktor : Factor w/ 0 levels:
## NULL
tam_sayi<-as.integer()
ondalik_sayi<-as.double()
karakter<-as.character()
mantiksal<-as.logical()
Faktor<-factor(x=character())
df<-data.frame(tam_sayi,ondalik_sayi,karakter,mantiksal,Faktor)
str(df)
## 'data.frame': 0 obs. of 5 variables:
## $ tam_sayi : int
## $ ondalik_sayi: num
## $ karakter : chr
## $ mantiksal : logi
## $ Faktor : Factor w/ 0 levels:
Aşağıda size verilen dört vektörden bir veri seti oluşturunuz. Oluşturduğunuz veri setinin deneme sütunundaki eksik veri sayısını hesaplayan komut yazınız.
ad = c('Su', 'Pera', 'Sule', 'Can', 'Cem', 'Name', 'Aras', 'Mete', 'Kaan', 'Pelin')
puan = c(12.5, 9, 16.5, 12, 9, 20, 14.5, 13.5, 8, 19)
deneme = c(1, NA, 2, NA, 2, NA, 1, NA, 2, 1)
bonus = c(1,0,1, 0, 0, 1, 1, 0,0, 1)
## [1] "Deneme sütunundaki NA sayisi:"
## [1] 4
ad = c('Su', 'Pera', 'Sule', 'Can', 'Cem', 'Name', 'Aras', 'Mete', 'Kaan', 'Pelin')
puan = c(12.5, 9, 16.5, 12, 9, 20, 14.5, 13.5, 8, 19)
deneme = c(1, NA, 2, NA, 2, NA, 1, NA, 2, 1)
bonus = c(1,0,1, 0, 0, 1, 1, 0,0, 1)
df<-data.frame(ad,puan,deneme,bonus)
paste("Deneme sutunundaki eksik veri sayisi: ", sum(is.na(df$deneme)))
## [1] "Deneme sutunundaki eksik veri sayisi: 4"
Kullanıcı tarafından belirlenen nxn boyutunda bir matris oluşturulsun.
nxn bir matrisin her bir elemanı satır ve sütun indeksleri çarpımı olsun.
Eger matrisin boyutları 10x10’dan büyükse sadece 10 satırını yazsın eğer matrisi boyutları 10x10’dan küçükse hepsini yazsın.
Kullancı üç girdiğinde oluşacak çıktı:
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 2 4 6
## [3,] 3 6 9Çözüm:
matris<-function() {
n_satir<-readline(prompt = "kare matris boyutu icin bir sayi giriniz: ")
n_satir<-as.integer(n_satir)
mat1<-matrix(0, nrow = n_satir, ncol = n_satir)
i=1
j=1
for(i in 1:nrow(mat1)){
for(j in 1:ncol(mat1)){
mat1[i,j]<-i*j
}
}
if(n_satir<=10){head(mat1,n_satir)} else{
head(mat1,10)
}
}
Fibonacci dizisinin elemanlari 1 1 2 3 5 8 13 21 34 55 89 … dizinin elemanlarını for() döngüsü ile oluşturmaya çalışınız.
Çözüm:
fibo<-function() {
n_sayi<-readline(prompt = "fibonacci dizisi için yazdırılmak istenen kadar eleman sayısını giriniz: ")
n_sayi<-as.integer(n_sayi)
y<-array()
for(i in 1:n_sayi){
if(i==1){
y[1]<-1
} else if(i==2){
y[1]<-1
y[2]<-1
} else{
y[1]<-1
y[2]<-1
y[i]<-y[i-2]+y[i-1]
}
}
print(y)
}
ornek veri setinde i. satırda negatif sayı yok ise çıktıda i. satırın ortalaması….dir yazsin.
Eğer veri setinde her hangi bir satırda negatif sayı var ise satır i negatif sayı bulunmaktadır.
veri setindeki satırlardaki toplam negatif sayı toplamı üçü geçerse çktıda cok sayıda negatif sayı yazsın ve döngü çalışmayı durdursun.
set.seed(1786)
ornek<-exp(matrix(rnorm(2000),nrow=100))
index1.temp<-sample(1:100,10)
index2.temp<-sample(1:20,10)
Çözüm?
Aşağıdaki üçgen çıktısını olusturacak olan kodu döngü kullanarak yazınız.
## *
## * * *
## * * * * *
## * * * * * * *
## * * * * * * * * *
## * * * * * * * * * * *
## * * * * * * * * * * * * *
## * * * * * * * * * * * * * * *
Çözüm:
i<-1
while(i<16){
cat( paste(strrep(" ", 16 - i), strrep("* ", i), "\n") )
i<-i+2
}
## *
## * * *
## * * * * *
## * * * * * * *
## * * * * * * * * *
## * * * * * * * * * * *
## * * * * * * * * * * * * *
## * * * * * * * * * * * * * * *
Aşağıdaki kare çıktısını oluşturacak olan kodu döngü kullanarak yazınız.
## * * * * *
## * * * * *
## * * * * *
## * * * * *
## * * * * *
Çözüm:
i<-1
while(i<6){
cat(strrep("* ", 5), "\n")
i<-i+1
}
## * * * * *
## * * * * *
## * * * * *
## * * * * *
## * * * * *
Aşağıdaki kare çıktısını oluşturacak olan kodu döngü kullanarak yazınız.
## * * * * * * *
## * * * * * * *
## * * * * * * *
## * * * * * * *
## * * * * * * *
## * * * * * * *
## * * * * * * *
i<-1
while(i<8){
cat(strrep("* ", 7), "\n")
i<-i+1
}
## * * * * * * *
## * * * * * * *
## * * * * * * *
## * * * * * * *
## * * * * * * *
## * * * * * * *
## * * * * * * *
Aşağıdaki dikdortgen çıktısını oluşturacak olan kodu döngü kullanarak yazınız.
Dikdörtgeni uzun ve kısa kenar icin deger girilerek de olusturabilirsiniz.,
## * * * * * * * * * *
## * * * * * * * * * *
## * * * * * * * * * *
## * * * * * * * * * *
dortgen<-function() {
a<-readline(prompt = "uzun kenar icin sayi giriniz: ")
b<-readline(prompt = "kısa kenar icin sayi giriniz: ")
a<-as.integer(a)
b<-as.integer(b)
i<-1
while(i<=b){
cat(strrep("* ", a), "\n")
i<-i+1
}
}