R temel sistem (base) ve paketlerden oluşan bir programlama dilidir. R Studio programı içerisinde:
yer alır.
R paket yükleme işlemei install.packages() fonksiyonu
ile console da yer alan packages sekmesineden yapılabilir.
Paketi aktif hale getirmek için ise library() fonksiyonu
kullanılır.
R’da bulunan temel paketlere ulaşmak için builtins()
kullanılabilir.
fonksiyonlar <- builtins()
fonksiyonlar[910:920]
## [1] "cut.Date" "cut" "curlGetHeaders" "cumsum"
## [5] "cumprod" "cummin" "cummax" "Cstack_info"
## [9] "crossprod" "cospi" "cosh"
Bazı R paketleri Git hub üzerinden yüklenmektedir. Bu paketlerin
yüklenmesinde devtools() fonksiyonu kullanılır.
devtools::install_github("dr-JT/semoutput")
Kod satırında:
Yardım sayfaları kullanılarak fonksiyon hakkında bilgi alınabilir. Bunun için:
ya da
komutları kullanılabilir. Örnek olarak devtools
fonksiyonuna ait yardım sayfasının görüntüsü verilmiştir.
R’da farklı paketlerde aynı isimde fonksiyonlar yer alabilir. Böyle paketlerin aynı anda kullanımında aynı isimli fonksiyonlardan kayanklı çakışmalar meydana gelebilir. Bu durumun önüne geçmek amacıyla:
package::function biçiminde kod kullanılabilir.
Örneğin;
dplyr::select() MASS::select()
Alıntı yapmak için citation(paket adı) fonksiyonu
kullanılır. devtools() fonksiyonu için alıntı örneği
aşağıda verilmiştir.
## To cite package 'devtools' in publications use:
##
## Wickham H, Hester J, Chang W, Bryan J (2022). _devtools: Tools to
## Make Developing R Packages Easier_. R package version 2.4.5,
## <https://CRAN.R-project.org/package=devtools>.
##
## A BibTeX entry for LaTeX users is
##
## @Manual{,
## title = {devtools: Tools to Make Developing R Packages Easier},
## author = {Hadley Wickham and Jim Hester and Winston Chang and Jennifer Bryan},
## year = {2022},
## note = {R package version 2.4.5},
## url = {https://CRAN.R-project.org/package=devtools},
## }
Fonksiyon belirli bir görevi yapması için yazılan bir grup komuttur. Bir fonksiyonun çalışabilmesi için girdileri olmalıdır.
Girdiler = Argümanlar + Argümanlarının Değerleri
rnorm() fonksiyonunun argümanları ve elemanları görüntülemek için
arg(rnorm) ve örneklerinin görüntülenmesi içinde
example(rnorm) fonksiyonları kullanılır.
Örneğin rnorm(10) argümanları ve elemanları verilmiştir.
rnorm(10)
## [1] 0.45755233 -0.04325666 -0.25816283 1.22388505 -1.38584317 1.82153757
## [7] 0.88499790 -0.51336407 0.81338901 -0.59198299
args(rnorm)
## function (n, mean = 0, sd = 1)
## NULL
example(rnorm)
##
## rnorm> require(graphics)
##
## rnorm> dnorm(0) == 1/sqrt(2*pi)
## [1] TRUE
##
## rnorm> dnorm(1) == exp(-1/2)/sqrt(2*pi)
## [1] TRUE
##
## rnorm> dnorm(1) == 1/sqrt(2*pi*exp(1))
## [1] TRUE
##
## rnorm> ## Using "log = TRUE" for an extended range :
## rnorm> par(mfrow = c(2,1))
##
## rnorm> plot(function(x) dnorm(x, log = TRUE), -60, 50,
## rnorm+ main = "log { Normal density }")
##
## rnorm> curve(log(dnorm(x)), add = TRUE, col = "red", lwd = 2)
##
## rnorm> mtext("dnorm(x, log=TRUE)", adj = 0)
##
## rnorm> mtext("log(dnorm(x))", col = "red", adj = 1)
##
## rnorm> plot(function(x) pnorm(x, log.p = TRUE), -50, 10,
## rnorm+ main = "log { Normal Cumulative }")
##
## rnorm> curve(log(pnorm(x)), add = TRUE, col = "red", lwd = 2)
##
## rnorm> mtext("pnorm(x, log=TRUE)", adj = 0)
##
## rnorm> mtext("log(pnorm(x))", col = "red", adj = 1)
##
## rnorm> ## if you want the so-called 'error function'
## rnorm> erf <- function(x) 2 * pnorm(x * sqrt(2)) - 1
##
## rnorm> ## (see Abramowitz and Stegun 29.2.29)
## rnorm> ## and the so-called 'complementary error function'
## rnorm> erfc <- function(x) 2 * pnorm(x * sqrt(2), lower = FALSE)
##
## rnorm> ## and the inverses
## rnorm> erfinv <- function (x) qnorm((1 + x)/2)/sqrt(2)
##
## rnorm> erfcinv <- function (x) qnorm(x/2, lower = FALSE)/sqrt(2)
Şablon olarak aşağıda belirtilen ifadeler kullanılır.
fonksiyonadi<- function(argumanlar ve olagan degerleri){ kodlar return() }
Örnek fonksiyon yazımı: farklı dereceden üs alma
us_al<- function(x,us){
return(x^us)
}
us_al(3,2)
## [1] 9
| Fonksiyon Adı | İşlevi |
|---|---|
| mean() | ortalama alma |
| avg() | vektör ortalaması alma |
| identical() | benzerlik sorgulama |
| ls() | çalışma alanında kayıtlı nesneleri sorgulama |
| objects() | çalışma alanında kayıtlı nesneleri sorgulama |
| ls.str() | hafızadki nesneleri ayrıntıları ile gösterme |
| q() | R’ı kapatma |
| setwd() | çalışma dizinini değiştirme |
| getwd() | çalışma dizinini sorgulama |
Vektörler tek boyutludur. R’da c() fonksiyonu ile
vektörler oluşturulur.
R da veriler bir araya gelerek veri yapılarını oluşturur.
length() fomksiyonu ile vektör uzunluğu bulunur.ad <- 1 # ad vektörü tek elemandan oluşmaktadır.
length(ad)
## [1] 1
Vektörlerle yapılan işlemlerde kullanılan fonksiyonlar tabloda belirtilmiştir.
| Fonksiyon Adı | İşlevi |
|---|---|
| sum() | verilerin toplanması |
| prod() | verilerin çarpılması |
| sort() | küçükten büyüğe sıralanması |
| rev() | elemanların sıralarının tersine çevrilmesi |
| sd() | standart sapmasının hesaplanması |
| max() | en büyük verinin gösterilmesi |
| min() | en küçük verinin gösterilmesi |
| which.max() | en büyük verinin vektörün kaçıncı elemanı olduğunun gösterilmesi |
| which.min() | en küçük verinin vektörün kaçıncı elemanı olduğunun gösterilmesi |
ad <- c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
ad[11] <- "Asu"; ad #tek eleman ekleme
## [1] "Ali" "Elif" "Su" "Deniz" "Aras" "Berk" "Can" "Ece" "Efe"
## [10] "Arda" "Asu"
ad[12:13] <- c("Ahu","Han") #birden fazla eleman ekleme
ad
## [1] "Ali" "Elif" "Su" "Deniz" "Aras" "Berk" "Can" "Ece" "Efe"
## [10] "Arda" "Asu" "Ahu" "Han"
ad <- c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
ad <- append(ad, "Taha", after=3) #başlangıçtan 3 kişi sonraya eleman ekleme
ad
## [1] "Ali" "Elif" "Su" "Taha" "Deniz" "Aras" "Berk" "Can" "Ece"
## [10] "Efe" "Arda"
ad <- c("Ali","Elif","Su","Deniz","Aras","Berk","Can","Ece","Efe","Arda")
# 6.eleman olarak Selim'i ekleme
ad <- c(ad[1:5],"Selim",ad[7:length(ad)]); ad
## [1] "Ali" "Elif" "Su" "Deniz" "Aras" "Selim" "Can" "Ece" "Efe"
## [10] "Arda"
Örüntülerle vektör oluşturmanın en kolay yolu : operatörüdür.
rakamlar1 <- 0:9
rakamlar1
## [1] 0 1 2 3 4 5 6 7 8 9
rakamlar2 <- 9:0
rakamlar2
## [1] 9 8 7 6 5 4 3 2 1 0
Farklı fonksiyonlar kullanılarak da vektörler oluşturulabilir. Bu fonksiyonların yardım sayfaları incelenmelidir.
Çeşitli örnekler ve ilgili kodlar sırasıyla verilmiştir.
#'den 10'a kadar birer birer artan sayı dizisi oluşturma
#seq(1,10,1) ya da seq(to=10) de aynı sonucu verir.
seq(from=1, to=10, by=1) #length.out argümanını incele.
## [1] 1 2 3 4 5 6 7 8 9 10
# üç elemanlı bir vektörün üç kere tekrar ettirilmesi
rep(c(3,4,5), 3)
## [1] 3 4 5 3 4 5 3 4 5
paste("test", 1:10)
## [1] "test 1" "test 2" "test 3" "test 4" "test 5" "test 6" "test 7"
## [8] "test 8" "test 9" "test 10"
sample() , runif() , rnorm() gibi farklı fonksiyonlarla rastgele veri üretilebilir. Bu fonksiyonların yardım sayfaları incelenmelidir.
Çeşitli örnekler ve ilgili kodlar sırasıyla verilmiştir.
# 0 ile 100 arasında rastgele 5 sayı üretme
sample(0:100,5)
## [1] 84 39 0 53 82
# 0 ile 5 arasında 10 tane rastgele sayı üretme
runif(10,0,5)
## [1] 2.67884391 0.88390650 0.68395980 3.52908604 0.60968669 2.33438047
## [7] 2.73759875 0.22371842 1.85168252 0.08216813
# Ortalaması 50 standart sapması 5 olan, 10 tane rastgele sayı üretme
rnorm(10,50,5)
## [1] 52.01369 58.50614 47.87425 53.03580 48.16643 49.71609 45.12537 52.45166
## [9] 52.16236 52.44814
R nesne yönelimli bir programlama dilidir. R’da nesne çeşitleri:
tamsayi <- 2L
typeof(tamsayi)
## [1] "integer"
tamsayi[1]
## [1] 2
ondalik_sayi <- 2.5
typeof(ondalik_sayi)
## [1] "double"
ondalik_sayi [1]
## [1] 2.5
x <- 1
y <- 2
x+y
## [1] 3
a <- c(3,4,5)
b <- c(1,2,3)
a+b
## [1] 4 6 8
a-b
## [1] 2 2 2
a*b
## [1] 3 8 15
a/b
## [1] 3.000000 2.000000 1.666667
karakter <- "Yaşasın_Cumhuriyet"
typeof(karakter)
## [1] "character"
karakter
## [1] "Yaşasın_Cumhuriyet"
a <- "Yaşasın"
b <- "Cumhuriyet"
paste (a,b)
## [1] "Yaşasın Cumhuriyet"
class() veya mode() fonksiyonları da kullanılabilir. Herhangi bir nesnenin belirli bir türe ait olup olamdığı ise is.() fomksiyonu ile sorgulanır. Sayısal verilerin türünü sorgulamak için typeof() fonksiyonu da kullanılabilir.
x <- 3.14
is.numeric(x)
## [1] TRUE
is.logical(x)
## [1] FALSE
y <- 2L
is.integer(y)
## [1] TRUE
is.double(y)
## [1] FALSE
Programlamanın temelini oluştururlar.
mantiksal1 <- TRUE
typeof(mantiksal1)
## [1] "logical"
mantiksal1
## [1] TRUE
Mantıksal operatörlerle yapılan sınamalar ile mantiksal nesneler oluşturulur.
sonuc <- 5<10
typeof(sonuc)
## [1] "logical"
sonuc
## [1] TRUE
**as.*()** fomksiyonu ile nesne türleri arasındaki değişim sağlanır.
as.numeric("3.14") #karakterden sayısala
## [1] 3.14
as.integer(pi) #ondalıktan tam sayıya
## [1] 3
as.character(TRUE) #mantıksaldan karaktere
## [1] "TRUE"
substr() fonksiyonu karakter nesneleri belirli bir yerden bölmek için kullanılır.
substr("YILMAZ",1:6,1:6)
## [1] "Y"
substring("YILMAZ",1:6,1:6)
## [1] "Y" "I" "L" "M" "A" "Z"