OLC750 R Yazılımına Giriş Dersi Fonksiyon Ödevleri

1. Belirli Bir Harfle Başlayan Nesnelerin İsimlerini Getiren Fonksiyonun Oluşturulması

İstenen belirli bir harfi içeren nesne isimlerini çağıran bir fonksiyon yazmak için ls(pat= ) kullanılabilir. Ancak nesne isimlerinin verilen bu belirli harfle başlaması istenirse ^sembolü ile birleştirilmesi gerekecektir. Bu işlem paste() fonksiyonu yardımı ile yapılabilir.

Dikkat edilmesi gereken bir nokta ise R ortamında oluşturulan her fonksiyonun kendi iç ‘ortamını’ yaratmasıdır. Fonksiyonun yalnızca kendi çalışma alanında değil genel çalışma alanında tarama yapabilmesi için envir=.GlobalEnv argümanının kullanılması gerekir.

belirli <- c(1)
bir <- c(2)
harfle <- c(3)
baslayan <- c(4)
nesne <- c(5)
isimlerini <- c(6)
bulan <- c(7)
fonksiyon <- c(8)

basla <- function(harf="a") {
  ls(pattern =  paste("^", harf,sep=""), envir=.GlobalEnv)
}

basla (harf="b")
## [1] "basla"    "baslayan" "belirli"  "bir"      "bulan"

2. Türkçe Alfabenin letters kullanılarak oluşturulması

alfabe <- letters
alfabe <- append(alfabe,"ç", 3)
alfabe <- append(alfabe,"ğ", 8)
alfabe <- append(alfabe,"ı", 10)
alfabe <- append(alfabe,"ö", 18)
alfabe <- append(alfabe,"ş", 23)
alfabe <- append(alfabe,"ü", 26)
(alfabe <- alfabe[-c(21, 29, 30)])
##  [1] "a" "b" "c" "ç" "d" "e" "f" "g" "ğ" "h" "ı" "i" "j" "k" "l" "m" "n" "o" "ö"
## [20] "p" "r" "s" "ş" "t" "u" "ü" "v" "y" "z"

3. Verilen İsim Çiftlerinin İstenen Şekilde Ayrılması

ad_soyad <- c("Ayse-Sel", "Can-Yucel", "Cem-Togay", "Banu-Cift")

(ad_soyad <- strsplit(ad_soyad, split = "-"))
## [[1]]
## [1] "Ayse" "Sel" 
## 
## [[2]]
## [1] "Can"   "Yucel"
## 
## [[3]]
## [1] "Cem"   "Togay"
## 
## [[4]]
## [1] "Banu" "Cift"
sapply(ad_soyad, `[[`, 1)
## [1] "Ayse" "Can"  "Cem"  "Banu"
sapply(ad_soyad, `[[`, 2)
## [1] "Sel"   "Yucel" "Togay" "Cift"

4. 1’den n’e Kadar Olan Sayıların Toplamını Hesaplayan Fonksiyon

toplam_kac <- function()
{
   n <- as.numeric(readline(prompt = "Kaca kadar olan sayıların toplamı hesaplansın? : "))
   t <- (n * (n + 1)) / 2
   return(cat( n,"'a kadar olan sayıların toplamı:",t, sep = "" ))
}

5. 1’den n’e Kadar Olan Sayıların Kareleri Toplamını Hesaplayan Fonksiyon

kare_toplam <- function(n)
{
   (n * (n + 1) * (2*n + 1)) / 6
}
kare_toplam(5)
## [1] 55
#Alternatif

kare_toplam_1 <- function(n)
{
   kare <- ((1:n) ^ 2)
   toplam <- sum(kare)
   return(toplam)
}

#Kullanıcının girdiği sayıya kadar olan sayıların kareleri toplamını hesaplama

kare_toplam_kac <- function()
{
   a <- readline(prompt = "Kaca kadar olan sayıların kareler toplamı hesaplansın? : ")
   n <- as.numeric(a)
   t <- (n * (n + 1) * (2*n + 1)) / 6
   return(cat( n,"'a kadar olan sayıların kareler toplamı:",t, sep = "" ))
}

6. 1’den n’e Kadar Olan Sayıların Toplamını Hesaplayan Fonksiyon

toplam_kac <- function()
{
   n <- as.numeric(readline(prompt = "Kaca kadar olan sayıların toplamı hesaplansın? : "))
   t <- (n * (n + 1)) / 2
   return(cat( n,"'a kadar olan sayıların toplamı:",t, sep = "" ))
}

Öğrenme Hedefleri

Geçtiğimiz hafta ödevi yaparken R’da neler öğrenmek istediğimi düşündüğümde maalesef aklımda belirli bir hedef canlanmadı. Sanırım bu R’ı bir öğrenme hedefi belirleyebilecek kadar tanımadığımın bir işaretiydi. Ancak bunun üzerine biraz düşününce bu duruma şöyle bir açıdan da bakabileceğimi fark ettim.

İlk Öğrenme Hedefim: R’ı bir öğrenme hedef belirleyebilecek kadar tanımayı başarmak :)