Arthmetic Operation


a = 10
b = 3

# Addition
res_add = a + b

# Sub
res_sub = a - b

# Multiplication
res_mult = a*b

# Division
res_div = a/b

# Modulo (reminder)
res_mod = a %% b

# Power
res_pow = a**b
res_pow2 = a^b

# Simplification
res = (5+3)*10 - ( (3-1) +4)/2

String

Conbine

seq1 = "ACTGCAATTTAC"
seq2 = "ACTTA"

combined_seq = paste(seq1, seq2)
print(combined_seq)
[1] "ACTGCAATTTAC ACTTA"
combined_seq = paste(seq1, seq2, sep = "")
print(combined_seq)
[1] "ACTGCAATTTACACTTA"
combined_seq = paste(seq1, seq2, sep = "-")
print(combined_seq)
[1] "ACTGCAATTTAC-ACTTA"
combined_seq = paste(seq1,seq1, seq2, seq2, sep = "-")
print(combined_seq)
[1] "ACTGCAATTTAC-ACTGCAATTTAC-ACTTA-ACTTA"

Substring

seq1 = "ACTGCAATTTAC"

sub = substr(seq1, 4, 8)
sub
[1] "GCAAT"

String length

seq3 = "ACTGCAATTTACACTGCAATTTACACTGCAATTTACACTGCAATTTACACTGCAATTTACACTGCAATTTACACTGCAATTTAC"

n = nchar(seq3)
n
[1] 84
nchar("ABCD")
[1] 4

Pattern matching

seq3 = "ACTGCAATTTACACTGCAATTTACACTGCAATTTACACTGCAATTTACACTGCAATTTACACTGCAATTTACACTGCAATTTAC"

p = "TTT"
grepl(p, seq3)
[1] TRUE
grepl("ZCVFJSP", seq3)
[1] FALSE
grepl("ACACTGCAATTTACACTGCAATTT", seq3)
[1] TRUE

occ = gregexpr(p, seq3)
occ
[[1]]
[1]  8 20 32 44 56 68 80
attr(,"match.length")
[1] 3 3 3 3 3 3 3
attr(,"index.type")
[1] "chars"
attr(,"useBytes")
[1] TRUE
sum(unlist(occ) != -1)
[1] 7
gregexpr("237489", seq3)
[[1]]
[1] -1
attr(,"match.length")
[1] -1
attr(,"index.type")
[1] "chars"
attr(,"useBytes")
[1] TRUE

Split string

seq4 = "gene1,gene2,gene3,gene4"

strsplit(seq4, split = ",")
[[1]]
[1] "gene1" "gene2" "gene3" "gene4"
seq4 = "gene1 - gene2 - gene3 - gene4"

strsplit(seq4, split = "-")
[[1]]
[1] "gene1 "  " gene2 " " gene3 " " gene4" 

Reverse string

library(stringi)
seq5 = "ACBDEFG"


stri_reverse(seq5)
[1] "GFEDBCA"
data_set = iris

Vector

Create


v = c( 10, 30, 68, "this", 89, "time" )
print(v)
[1] "10"   "30"   "68"   "this" "89"   "time"

Access [ ]

v[3]
[1] "68"
v[5]
[1] "89"
v[6]
[1] "time"
v[7]
[1] NA
v[1:3]
[1] "10" "30" "68"
v[2:4]
[1] "30"   "68"   "this"
v[2:10]
[1] "30"   "68"   "this" "89"   "time" NA     NA     NA     NA    

Insert element


v2 = c(v, 100)
v = c(v, 100)
v = c("start", v)
v
[1] "start" "10"    "30"    "68"    "this"  "89"    "time"  "100"  
v[1:3]
[1] "start" "10"    "30"   
v[4:8]
[1] "68"   "this" "89"   "time" "100" 
v = c(v[1:3], 200, v[4:8])
v
[1] "start" "10"    "30"    "200"   "68"    "this"  "89"    "time"  "100"  

Over-write

a = 200
a = 500

Sort

scores = c(10, 100, 50, 90, 89, 55)

sort(scores)
[1]  10  50  55  89  90 100
sort(scores, decreasing = TRUE)
[1] 100  90  89  55  50  10
?sort()
?match
match(100, scores)
[1] 2
match(90, scores)
[1] 4
match(1000, scores)
[1] NA

Conditional Selection

scores[ scores > 50 ]
[1] 100  90  89  55
scores[ scores >= 50 ]
[1] 100  50  90  89  55
scores[ scores < 50 ]
[1] 10
scores[ scores == 50 ]
[1] 50
scores[ scores == 1000 ]
numeric(0)

Find min

min(scores)
[1] 10

max

max(scores)
[1] 100

avg

mean(scores)
[1] 65.66667

sum

sum(scores)
[1] 394

length

length(scores)
[1] 6
394/6
[1] 65.66667

SD

sd(scores)
[1] 33.98039

variance

var(scores)
[1] 1154.667

standard error = sd/sqrt(n)

se = sd(scores) / sqrt(6)
se = sd(scores) / 6**0.5
se
[1] 13.87243

Quantiles

quantile(scores)
    0%    25%    50%    75%   100% 
 10.00  51.25  72.00  89.75 100.00 

Correlation

-1, +1 =>

age1 = c(60, 25, 50, 30, 27, 40)
age1
[1] 60 25 50 30 27 40
scores
[1]  10 100  50  90  89  55
cor(scores,age1)
[1] -0.9785945
age2 = c(100, 40, 30, 20, 100, 50)
cor(scores,age2)
[1] -0.3993987
cor(scores, scores)
[1] 1
age3 = c(30, 60, 35, 50, 45, 38)
cor(scores, age3)
[1] 0.9150097

Note: Gene expression heritibility and repitability

Delete element from a vec

scores
[1]  10 100  50  90  89  55
scores[-2]
[1] 10 50 90 89 55

Conditional statement (if else)

30 > 20
[1] TRUE
30 < 20
[1] FALSE
30 == 20
[1] FALSE
a = 30
b = 20

a > b
[1] TRUE

temp = 40

if (temp > 30) {
  print("This is a warm day!")
} else {
  print("This is a normal day")
}
[1] "This is a warm day!"

cal = "jodsjfs"
a = 10
b = 5

if (cal == "+"){
  print(a+b)
} else if (cal == "-") {
  print(a-b)
} else if (cal == "*") {
  print(a*b)
} else if (cal == "/") {
  print(a/b)
} else {
  print("Invalid")
}
[1] "Invalid"
scores
[1]  10 100  50  90  89  55
s = scores[4]

if (s > 50) {
  print("Pass!")
} else {
  print("Fail")
}
[1] "Pass!"

Loop


for (i in 1:10) {
  print(i)
}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
scores
[1]  10 100  50  90  89  55
for (i in 1:10) {
  print(scores[i])
}
[1] 10
[1] 100
[1] 50
[1] 90
[1] 89
[1] 55
[1] NA
[1] NA
[1] NA
[1] NA
for (i in 1:length(scores)) {
  print(scores[i])
}
[1] 10
[1] 100
[1] 50
[1] 90
[1] 89
[1] 55
for (i in 1:length(scores)) {
  print(scores[i])
  
  s = scores[i]

  if (s > 50) {
    print("Pass!")
  } else {
    print("Fail")
  }
  
}
[1] 10
[1] "Fail"
[1] 100
[1] "Pass!"
[1] 50
[1] "Fail"
[1] 90
[1] "Pass!"
[1] 89
[1] "Pass!"
[1] 55
[1] "Pass!"
for (i in 1:length(scores)) {
  
  s = scores[i]

  if (s > 50) {
    cat(i, s, "Pass!\n")
  } else {
    cat(i, s, "Fail\n")
  }
  
}
1 10 Fail
2 100 Pass!
3 50 Fail
4 90 Pass!
5 89 Pass!
6 55 Pass!
scores
[1]  10 100  50  90  89  55
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCiMjIEFydGhtZXRpYyBPcGVyYXRpb24KYGBge3J9CgphID0gMTAKYiA9IDMKCiMgQWRkaXRpb24KcmVzX2FkZCA9IGEgKyBiCgojIFN1YgpyZXNfc3ViID0gYSAtIGIKCiMgTXVsdGlwbGljYXRpb24KcmVzX211bHQgPSBhKmIKCiMgRGl2aXNpb24KcmVzX2RpdiA9IGEvYgoKIyBNb2R1bG8gKHJlbWluZGVyKQpyZXNfbW9kID0gYSAlJSBiCgojIFBvd2VyCnJlc19wb3cgPSBhKipiCnJlc19wb3cyID0gYV5iCgojIFNpbXBsaWZpY2F0aW9uCnJlcyA9ICg1KzMpKjEwIC0gKCAoMy0xKSArNCkvMgpgYGAKCgoKIyMgU3RyaW5nIAoKIyMjIENvbmJpbmUKCmBgYHtyfQpzZXExID0gIkFDVEdDQUFUVFRBQyIKc2VxMiA9ICJBQ1RUQSIKCmNvbWJpbmVkX3NlcSA9IHBhc3RlKHNlcTEsIHNlcTIpCnByaW50KGNvbWJpbmVkX3NlcSkKCgpjb21iaW5lZF9zZXEgPSBwYXN0ZShzZXExLCBzZXEyLCBzZXAgPSAiIikKcHJpbnQoY29tYmluZWRfc2VxKQoKY29tYmluZWRfc2VxID0gcGFzdGUoc2VxMSwgc2VxMiwgc2VwID0gIi0iKQpwcmludChjb21iaW5lZF9zZXEpCgpjb21iaW5lZF9zZXEgPSBwYXN0ZShzZXExLHNlcTEsIHNlcTIsIHNlcTIsIHNlcCA9ICItIikKcHJpbnQoY29tYmluZWRfc2VxKQpgYGAKCiMjIyBTdWJzdHJpbmcKYGBge3J9CnNlcTEgPSAiQUNUR0NBQVRUVEFDIgoKc3ViID0gc3Vic3RyKHNlcTEsIDQsIDgpCnN1YgpgYGAKCgojIyMgU3RyaW5nIGxlbmd0aApgYGB7cn0Kc2VxMyA9ICJBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUMiCgpuID0gbmNoYXIoc2VxMykKbgoKbmNoYXIoIkFCQ0QiKQpgYGAKCgojIyMgUGF0dGVybiBtYXRjaGluZwpgYGB7cn0Kc2VxMyA9ICJBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUNBQ1RHQ0FBVFRUQUMiCgpwID0gIlRUVCIKZ3JlcGwocCwgc2VxMykKZ3JlcGwoIlpDVkZKU1AiLCBzZXEzKQoKCmdyZXBsKCJBQ0FDVEdDQUFUVFRBQ0FDVEdDQUFUVFQiLCBzZXEzKQpgYGAKCmBgYHtyfQoKb2NjID0gZ3JlZ2V4cHIocCwgc2VxMykKb2NjCmBgYAoKYGBge3J9CnN1bSh1bmxpc3Qob2NjKSAhPSAtMSkKYGBgCgpgYGB7cn0KZ3JlZ2V4cHIoIjIzNzQ4OSIsIHNlcTMpCmBgYAoKCiMjIyBTcGxpdCBzdHJpbmcKCmBgYHtyfQpzZXE0ID0gImdlbmUxLGdlbmUyLGdlbmUzLGdlbmU0IgoKc3Ryc3BsaXQoc2VxNCwgc3BsaXQgPSAiLCIpCmBgYAoKYGBge3J9CnNlcTQgPSAiZ2VuZTEgLSBnZW5lMiAtIGdlbmUzIC0gZ2VuZTQiCgpzdHJzcGxpdChzZXE0LCBzcGxpdCA9ICItIikKYGBgCgojIyMgUmV2ZXJzZSBzdHJpbmcKCmBgYHtyfQpsaWJyYXJ5KHN0cmluZ2kpCnNlcTUgPSAiQUNCREVGRyIKCgpzdHJpX3JldmVyc2Uoc2VxNSkKYGBgCgoKCmBgYHtyfQpkYXRhX3NldCA9IGlyaXMKYGBgCgoKIyMgVmVjdG9yCgojIyMgQ3JlYXRlCgpgYGB7cn0KCnYgPSBjKCAxMCwgMzAsIDY4LCAidGhpcyIsIDg5LCAidGltZSIgKQpwcmludCh2KQoKYGBgCgojIyMgQWNjZXNzIFsgXQpgYGB7cn0KdlszXQp2WzVdCnZbNl0KCnZbN10KYGBgCgpgYGB7cn0KdlsxOjNdCnZbMjo0XQoKdlsyOjEwXQpgYGAKCiMjIyBJbnNlcnQgZWxlbWVudApgYGB7cn0KCnYyID0gYyh2LCAxMDApCnYgPSBjKHYsIDEwMCkKCmBgYAoKYGBge3J9CnYgPSBjKCJzdGFydCIsIHYpCnYKYGBgCgoKYGBge3J9CnZbMTozXQp2WzQ6OF0KCnYgPSBjKHZbMTozXSwgMjAwLCB2WzQ6OF0pCnYKYGBgCgojIyMgT3Zlci13cml0ZQpgYGB7cn0KYSA9IDIwMAphID0gNTAwCmBgYAoKCgojIyMgU29ydApgYGB7cn0Kc2NvcmVzID0gYygxMCwgMTAwLCA1MCwgOTAsIDg5LCA1NSkKCnNvcnQoc2NvcmVzKQpzb3J0KHNjb3JlcywgZGVjcmVhc2luZyA9IFRSVUUpCmBgYAoKYGBge3J9Cj9zb3J0KCkKYGBgCgpgYGB7cn0KP21hdGNoCmBgYAoKCgpgYGB7cn0KbWF0Y2goMTAwLCBzY29yZXMpCmBgYAoKCmBgYHtyfQptYXRjaCg5MCwgc2NvcmVzKQpgYGAKCgpgYGB7cn0KbWF0Y2goMTAwMCwgc2NvcmVzKQpgYGAKCgoKIyMjIENvbmRpdGlvbmFsIFNlbGVjdGlvbgpgYGB7cn0Kc2NvcmVzWyBzY29yZXMgPiA1MCBdCmBgYAoKCmBgYHtyfQpzY29yZXNbIHNjb3JlcyA+PSA1MCBdCmBgYAoKYGBge3J9CnNjb3Jlc1sgc2NvcmVzIDwgNTAgXQpgYGAKCgpgYGB7cn0Kc2NvcmVzWyBzY29yZXMgPT0gNTAgXQpgYGAKCgpgYGB7cn0Kc2NvcmVzWyBzY29yZXMgPT0gMTAwMCBdCmBgYAoKCgojIyMgRmluZCBtaW4KYGBge3J9Cm1pbihzY29yZXMpCmBgYAoKIyMjIG1heApgYGB7cn0KbWF4KHNjb3JlcykKYGBgCgoKIyMjIGF2ZwpgYGB7cn0KbWVhbihzY29yZXMpCmBgYAoKIyMjIHN1bQpgYGB7cn0Kc3VtKHNjb3JlcykKYGBgCgojIyMgbGVuZ3RoCmBgYHtyfQpsZW5ndGgoc2NvcmVzKQpgYGAKCgpgYGB7cn0KMzk0LzYKYGBgCgoKIyMjIFNECmBgYHtyfQpzZChzY29yZXMpCmBgYAoKIyMjIHZhcmlhbmNlCmBgYHtyfQp2YXIoc2NvcmVzKQpgYGAKCiMjIyBzdGFuZGFyZCBlcnJvciA9IHNkL3NxcnQobikKYGBge3J9CnNlID0gc2Qoc2NvcmVzKSAvIHNxcnQoNikKc2UgPSBzZChzY29yZXMpIC8gNioqMC41CnNlCmBgYAoKIyMjIFF1YW50aWxlcwpgYGB7cn0KcXVhbnRpbGUoc2NvcmVzKQpgYGAKCgoKIyMgQ29ycmVsYXRpb24gCiMjIyAtMSwgKzEgPT4gCmBgYHtyfQphZ2UxID0gYyg2MCwgMjUsIDUwLCAzMCwgMjcsIDQwKQphZ2UxCnNjb3JlcwoKCmNvcihzY29yZXMsYWdlMSkKYGBgCgoKYGBge3J9CmFnZTIgPSBjKDEwMCwgNDAsIDMwLCAyMCwgMTAwLCA1MCkKY29yKHNjb3JlcyxhZ2UyKQpgYGAKCgpgYGB7cn0KY29yKHNjb3Jlcywgc2NvcmVzKQpgYGAKCmBgYHtyfQphZ2UzID0gYygzMCwgNjAsIDM1LCA1MCwgNDUsIDM4KQpjb3Ioc2NvcmVzLCBhZ2UzKQpgYGAKCgojIyMgTm90ZTogR2VuZSBleHByZXNzaW9uIGhlcml0aWJpbGl0eSBhbmQgcmVwaXRhYmlsaXR5CgoKIyMjIERlbGV0ZSBlbGVtZW50IGZyb20gYSB2ZWMKYGBge3J9CnNjb3JlcwpzY29yZXNbLTJdCmBgYAoKCgoKIyMgQ29uZGl0aW9uYWwgc3RhdGVtZW50IChpZiBlbHNlKQoKYGBge3J9CjMwID4gMjAKMzAgPCAyMAoKMzAgPT0gMjAKCmEgPSAzMApiID0gMjAKCmEgPiBiCmBgYAoKCmBgYHtyfQoKdGVtcCA9IDQwCgppZiAodGVtcCA+IDMwKSB7CiAgcHJpbnQoIlRoaXMgaXMgYSB3YXJtIGRheSEiKQp9IGVsc2UgewogIHByaW50KCJUaGlzIGlzIGEgbm9ybWFsIGRheSIpCn0KCmBgYAoKCgpgYGB7cn0KCmNhbCA9ICJqb2RzamZzIgphID0gMTAKYiA9IDUKCmlmIChjYWwgPT0gIisiKXsKICBwcmludChhK2IpCn0gZWxzZSBpZiAoY2FsID09ICItIikgewogIHByaW50KGEtYikKfSBlbHNlIGlmIChjYWwgPT0gIioiKSB7CiAgcHJpbnQoYSpiKQp9IGVsc2UgaWYgKGNhbCA9PSAiLyIpIHsKICBwcmludChhL2IpCn0gZWxzZSB7CiAgcHJpbnQoIkludmFsaWQiKQp9CgpgYGAKCgpgYGB7cn0Kc2NvcmVzCgpzID0gc2NvcmVzWzRdCgppZiAocyA+IDUwKSB7CiAgcHJpbnQoIlBhc3MhIikKfSBlbHNlIHsKICBwcmludCgiRmFpbCIpCn0KCgpgYGAKCgojIyMgTG9vcApgYGB7cn0KCmZvciAoaSBpbiAxOjEwKSB7CiAgcHJpbnQoaSkKfQoKYGBgCgpgYGB7cn0Kc2NvcmVzCmBgYAoKCmBgYHtyfQpmb3IgKGkgaW4gMToxMCkgewogIHByaW50KHNjb3Jlc1tpXSkKfQpgYGAKCmBgYHtyfQpmb3IgKGkgaW4gMTpsZW5ndGgoc2NvcmVzKSkgewogIHByaW50KHNjb3Jlc1tpXSkKfQpgYGAKCgpgYGB7cn0KZm9yIChpIGluIDE6bGVuZ3RoKHNjb3JlcykpIHsKICBwcmludChzY29yZXNbaV0pCiAgCiAgcyA9IHNjb3Jlc1tpXQoKICBpZiAocyA+IDUwKSB7CiAgICBwcmludCgiUGFzcyEiKQogIH0gZWxzZSB7CiAgICBwcmludCgiRmFpbCIpCiAgfQogIAp9CmBgYAoKCgoKYGBge3J9CmZvciAoaSBpbiAxOmxlbmd0aChzY29yZXMpKSB7CiAgCiAgcyA9IHNjb3Jlc1tpXQoKICBpZiAocyA+IDUwKSB7CiAgICBjYXQoaSwgcywgIlBhc3MhXG4iKQogIH0gZWxzZSB7CiAgICBjYXQoaSwgcywgIkZhaWxcbiIpCiAgfQogIAp9CmBgYAoKCmBgYHtyfQpzY29yZXMKCgpgYGAKCgoKCgoKCgoKCg==