repo <- gsub ( "\\\\", "/", readClipboard () ); repo
## [1] "repeat{" " i<-i+1" " print(kuadrat[i])"
## [4] " if (i==8) {break()}" "}"
Jika menggunakan package yang tidak diminta atau tidak dipelajari. Maka jawaban dianggap tidak sesuai
#Pangkat 10
1.2e-2
## [1] 0.012
#Complex
1.2e-2+2i
## [1] 0.012+2i
sqrt(2i)
## [1] 1+1i
sqrt(2)
## [1] 1.414214
arr <- array(iris)
View(arr)
faq <- factor(c(1, 2, 3, 4, 5)); str(faq)
## Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5
vec <- c(1:10)
df <- data.frame(x=rep(c('A', 'B', 'C', 'D', 'E'), 2), vec); df
## x vec
## 1 A 1
## 2 B 2
## 3 C 3
## 4 D 4
## 5 E 5
## 6 A 6
## 7 B 7
## 8 C 8
## 9 D 9
## 10 E 10
if (kondisi) ekspresi (T) [else ekspresi (F)]
y = 0
if(y == 0) y=2^y
y
## [1] 1
x <- ifelse(kondisi, nilai jika T, nilai jika F)
nilai jika F -> opsional
ifelse(y > 0, "positif", "negatif")
## [1] "positif"
centre <- function(x, type){
switch(type,
mean = cat("\n mean :", mean(x)),
median = cat("\n median :", median(x)),
trimmed = cat("\n trimmed mean :", mean(x, trim = .1)))
}
dt <- c(1:9)
dt_mean <- centre(dt,"mean")
##
## mean : 5
dt_median <- centre(dt, "median")
##
## median : 5
dt_trim <- centre(dt, "trimmed")
##
## trimmed mean : 5
for(objek in sekuens) ekspresi
kuadrat<-c()
for (i in 1:10){
kuadrat[i] <- i^2
}
kuadrat
## [1] 1 4 9 16 25 36 49 64 81 100
while (condition) ekspresi
i <- length(kuadrat)
akar <- c()
while (i>0){
akar[i] <- sqrt(kuadrat[i])
i <- i-1
}
akar
## [1] 1 2 3 4 5 6 7 8 9 10
Mirip do while di c. Pasti dijalankan 1 kali walau kondisi salah
repeat eskpresi
(untuk menghentikan gunakan perintah break)
repeat{
i<-i+1
print(kuadrat[i])
if (i==8) {break()}
}
## [1] 1
## [1] 4
## [1] 9
## [1] 16
## [1] 25
## [1] 36
## [1] 49
## [1] 64
data <- matrix(c(1,2,3,
4,5,6,
7,8,9), ncol = 3)
x <- data
std.dev <- function(x) sqrt(var(x)) #Jika cmn 1 perintah, tidk perlu {}
std.dev(x)
## [,1] [,2] [,3]
## [1,] 1 1 1
## [2,] 1 1 1
## [3,] 1 1 1
uy <- function(x=10) x/2
uy()
## [1] 5
uy(8)
## [1] 4
apply(objek, margin, function, …)
margin -> misal untuk setiap baris
func1 <- function(x){
...
list(hasil1, hasil2)
}
#Atau dengan return :
func2 <- function(x){
...
return(list(hasil1, hasil2))
}
func1 <- function(arg1, arg2) arg1 - arg2
func1(10, 20)
## [1] -10
func1(arg2=20, arg1=10)
## [1] -10
Jika suatu baris di dalam function ada error, maka seluruh baris setelahnya tidak akan dijalankan
Agar baris setelahnya masih bisa dijalankan, gunakan function “try”
function(x){
...
try(log("a"))
...
}
## function(x){
## ...
## try(log("a"))
## ...
## }
#Bisa seperti ini :
function(x){
...
error <- try(log("a"))
if(error..)
...
}
## function(x){
## ...
## error <- try(log("a"))
## if(error..)
## ...
## }
Jika ada error, kasih perintah
function(x){
...
tryCatch(log(10), finally=print("Hello"))
...
}
## function(x){
## ...
## tryCatch(log(10), finally=print("Hello"))
## ...
## }
Hanya menampilkan kesalahan
function(x){
...
error <- try(log("a"))
if(error..) warning("Ada kesalahan")
...
}
## function(x){
## ...
## error <- try(log("a"))
## if(error..) warning("Ada kesalahan")
## ...
## }
Menghentikan program & memberi keterangan
function(x){
...
error <- try(log("a"))
if(error..) stop("Ada kesalahan")
...
}
## function(x){
## ...
## error <- try(log("a"))
## if(error..) stop("Ada kesalahan")
## ...
## }
ttest <- function(y1, y2, test="dua-arah", alpha=0.5){
n1 <- length(y1); n2 <- length(y2)
s2 <- ((n1-1)*var(y1) + (n2-1)*var(y2)) / ndf
tstat <- (mean(y1) - mean(y2)) / sqrt(s2*(1/n1 + 1/n2))
tail.area <-
switch(test,
"dua-arah" = 2 * (1-pt(abs(tstat), ndf)),
kecil = pt(tstat,ndf),
besar = 1-pt(tstat,ndf),
{
warning("uji harus 'dua-arah', 'kecil' atau 'besar'")
NULL
}
)
list(tstat=tstat, df=ndf,
reject=if(!is.nulll(tail.area)) tail.area < alpha,
tail.area = tail.area
)
}