Practice using paste

library(ggplot2)

a<-"H Van Tuyen"

b<-"Kha Nha"

paste0(a,"! ", b) # Insert ! between a and b
[1] "H Van Tuyen! Kha Nha"
paste0(a," ", b,". Sorry!") # put space and add other word 
[1] "H Van Tuyen Kha Nha. Sorry!"
paste0(b, "_", c(1:10))
 [1] "Kha Nha_1"  "Kha Nha_2"  "Kha Nha_3"  "Kha Nha_4"  "Kha Nha_5"  "Kha Nha_6"  "Kha Nha_7"  "Kha Nha_8"  "Kha Nha_9" 
[10] "Kha Nha_10"

To get part of strings using substr

substr('Hello World', 7, 11) # included space as 7
[1] "World"

To replace a character in strings using sub or gsub

gsub("H","My Friend","H is Tom")
[1] "My Friend is Tom"

To find elements that fit a particular pattern use grep. It returns the index of the matching elements in a vector.

d <- c('az20', 'az21', 'az22', 'ba30', 'ba31', 'ba32')
i <- grep('b', d) # Find all elements having pattern 'b' in d

d[i]
[1] "ba30" "ba31" "ba32"

Using which

a<-1:10

id<-which(a>4) # Get all positions with values greater than 4

a[id]
[1]  5  6  7  8  9 10

To get a set of values presenting a vector or not

a<-1:10

b<-2:4

c<-which(b %in% a)

match(a,b) # any matching values in a and b. It tells that the second, third, fourth of a matched with the first, second and third of b
 [1] NA  1  2  3 NA NA NA NA NA NA

Using apply function

Structure: apply(matrix, margin, function) - margin = 1 (row); 2=column, c(1,2)=both

a<- matrix(1:15, nrow=5, ncol=3)
# Sum the values of each row
apply(a, 1, sum,na.rm=T)
[1] 18 21 24 27 30
## Alternative
rowSums(a)
[1] 18 21 24 27 30
# We can write a function to do the same

for (i in 1:ncol(a)){
  maxim<-max(a[i,])
  print(maxim)
}
[1] 11
[1] 12
[1] 13
# Sum the values of each column
apply(a,2,sum)
[1] 15 40 65
## Alternatives
colSums(a)
[1] 15 40 65

Functions

*Dataframe output

myfunction<-function(x){
  area<-x*2+3
  minus<-area-23/3
  return(data.frame(Area=area,Minus=minus))
}

myfunction(c(1:5))
NA

*List output

myfunction<-function(x){
  area<-x*2+3
  minus<-area-23/3
  p<-plot(area~minus,xlab="X")
  return(list(Area=area,Minus=minus,p))
}

myfunction(c(1:5))
$Area
[1]  5  7  9 11 13

$Minus
[1] -2.6666667 -0.6666667  1.3333333  3.3333333  5.3333333

[[3]]
NULL

Apply Family Functions apply, sapply,lapply, tapply and many more such as rapply, vapply and mapply

lapply lapply(object, function,….) object=dataframe or vector or list ==> output=list

# Making up a list data

mylist<-list(Day1=c(1:5),Day2=c(2,5,6,7,8),Day3=c(10,3,4,7,8))

lapply(mylist,mean)
$Day1
[1] 3

$Day2
[1] 5.6

$Day3
[1] 6.4
# Dataframe 

mydf<-data.frame(Day1=c(1:5),Day2=c(2,5,6,7,8),Day3=c(10,3,4,7,8))

lapply(mydf,mean)
$Day1
[1] 3

$Day2
[1] 5.6

$Day3
[1] 6.4

sapply sapply(object,function,….) object=dataframe, vector or list ===> output =vector

sapply(mylist, mean)
Day1 Day2 Day3 
 3.0  5.6  6.4 
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIFByYWN0aWNlIHVzaW5nIGBwYXN0ZWANCg0KYGBge3J9DQpsaWJyYXJ5KGdncGxvdDIpDQoNCmE8LSJIIFZhbiBUdXllbiINCg0KYjwtIktoYSBOaGEiDQoNCnBhc3RlMChhLCIhICIsIGIpICMgSW5zZXJ0ICEgYmV0d2VlbiBhIGFuZCBiDQoNCnBhc3RlMChhLCIgIiwgYiwiLiBTb3JyeSEiKSAjIHB1dCBzcGFjZSBhbmQgYWRkIG90aGVyIHdvcmQgDQoNCnBhc3RlMChiLCAiXyIsIGMoMToxMCkpICMgSW5zZXJ0IDEgdG8gMTAgYnkgXyB0byBiDQoNCmBgYA0KDQojIFRvIGdldCBwYXJ0IG9mIHN0cmluZ3MgdXNpbmcgYHN1YnN0cmANCg0KYGBge3J9DQpzdWJzdHIoJ0hlbGxvIFdvcmxkJywgNywgMTEpICMgaW5jbHVkZWQgc3BhY2UgYXMgNiAoc3RhcnRpbmcgNyBhbmQgZW5kaW5nIDExKQ0KDQpgYGANCg0KIyBUbyByZXBsYWNlIGEgY2hhcmFjdGVyIGluIHN0cmluZ3MgdXNpbmcgYHN1YmAgb3IgYGdzdWJgDQoNCmBgYHtyfQ0KZ3N1YigiSCIsIk15IEZyaWVuZCIsIkggaXMgVG9tIikgIyBIIGlzIHJlcGxhY2VkIGJ5IE15IEZyaWVuZA0KDQpgYGANCg0KIyBUbyBmaW5kIGVsZW1lbnRzIHRoYXQgZml0IGEgcGFydGljdWxhciBwYXR0ZXJuIHVzZSBgZ3JlcGAuIEl0IHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGluZyBlbGVtZW50cyBpbiBhIHZlY3Rvci4NCg0KYGBge3J9DQpkIDwtIGMoJ2F6MjAnLCAnYXoyMScsICdhejIyJywgJ2JhMzAnLCAnYmEzMScsICdiYTMyJykNCmkgPC0gZ3JlcCgnYicsIGQpICMgRmluZCBhbGwgZWxlbWVudHMgaGF2aW5nIHBhdHRlcm4gJ2InIGluIGQNCg0KZFtpXQ0KYGBgDQoNCiMgVXNpbmcgYHdoaWNoYA0KDQpgYGB7cn0NCmE8LTE6MTANCg0KaWQ8LXdoaWNoKGE+NCkgIyBHZXQgYWxsIGluZGljZXMgd2l0aCB2YWx1ZXMgZ3JlYXRlciB0aGFuIDQNCg0KYVtpZF0NCmBgYA0KDQojIFRvIGdldCBhIHNldCBvZiB2YWx1ZXMgcHJlc2VudGluZyBhIHZlY3RvciBvciBub3QNCg0KYGBge3J9DQphPC0xOjEwDQoNCmI8LTI6NA0KDQpjPC13aGljaChiICVpbiUgYSkNCg0KbWF0Y2goYSxiKSAjIGFueSBtYXRjaGluZyB2YWx1ZXMgaW4gYSBhbmQgYi4gSXQgdGVsbHMgdGhhdCB0aGUgc2Vjb25kLCB0aGlyZCwgZm91cnRoIG9mIGEgbWF0Y2hlZCB3aXRoIHRoZSBmaXJzdCwgc2Vjb25kIGFuZCB0aGlyZCBvZiBiDQpgYGANCg0KIyBVc2luZyBgYXBwbHlgIGZ1bmN0aW9uDQoNClN0cnVjdHVyZTogYXBwbHkobWF0cml4LCBtYXJnaW4sIGZ1bmN0aW9uKSAtIG1hcmdpbiA9IDEgKHJvdyk7IDI9Y29sdW1uLCBjKDEsMik9Ym90aA0KDQpgYGB7cn0NCmE8LSBtYXRyaXgoMToxNSwgbnJvdz01LCBuY29sPTMpDQojIFN1bSB0aGUgdmFsdWVzIG9mIGVhY2ggcm93DQphcHBseShhLCAxLCBzdW0sbmEucm09VCkNCiMjIEFsdGVybmF0aXZlDQpyb3dTdW1zKGEpDQojIFdlIGNhbiB3cml0ZSBhIGZ1bmN0aW9uIHRvIGRvIHRoZSBzYW1lDQoNCmZvciAoaSBpbiAxOm5jb2woYSkpew0KICBtYXhpbTwtbWF4KGFbaSxdKQ0KICBwcmludChtYXhpbSkNCn0NCg0KIyBTdW0gdGhlIHZhbHVlcyBvZiBlYWNoIGNvbHVtbg0KYXBwbHkoYSwyLHN1bSkNCiMjIEFsdGVybmF0aXZlcw0KY29sU3VtcyhhKQ0KYGBgDQoNCiMgRnVuY3Rpb25zIA0KDQoqRGF0YWZyYW1lIG91dHB1dA0KDQpgYGB7cn0NCm15ZnVuY3Rpb248LWZ1bmN0aW9uKHgpew0KICBhcmVhPC14KjIrMw0KICBtaW51czwtYXJlYS0yMy8zDQogIHJldHVybihkYXRhLmZyYW1lKEFyZWE9YXJlYSxNaW51cz1taW51cykpDQp9DQoNCm15ZnVuY3Rpb24oYygxOjUpKQ0KDQpgYGANCg0KKkxpc3Qgb3V0cHV0DQoNCmBgYHtyfQ0KbXlmdW5jdGlvbjwtZnVuY3Rpb24oeCl7DQogIGFyZWE8LXgqMiszDQogIG1pbnVzPC1hcmVhLTIzLzMNCiAgcDwtcGxvdChhcmVhfm1pbnVzLHhsYWI9IlgiKQ0KICByZXR1cm4obGlzdChBcmVhPWFyZWEsTWludXM9bWludXMscCkpDQp9DQoNCm15ZnVuY3Rpb24oYygxOjUpKQ0KYGBgDQoNCiMgQXBwbHkgRmFtaWx5IEZ1bmN0aW9ucyBgYXBwbHlgLCBgc2FwcGx5YCxgbGFwcGx5YCwgYHRhcHBseWAgYW5kIG1hbnkgbW9yZSBzdWNoIGFzIGByYXBwbHlgLCBgdmFwcGx5YCBhbmQgYG1hcHBseWANCg0KYGxhcHBseWAgbGFwcGx5KG9iamVjdCwgZnVuY3Rpb24sLi4uLikgb2JqZWN0PWRhdGFmcmFtZSBvciB2ZWN0b3Igb3IgbGlzdCA9PT4gb3V0cHV0PWxpc3QNCg0KYGBge3J9DQojIE1ha2luZyB1cCBhIGxpc3QgZGF0YQ0KDQpteWxpc3Q8LWxpc3QoRGF5MT1jKDE6NSksRGF5Mj1jKDIsNSw2LDcsOCksRGF5Mz1jKDEwLDMsNCw3LDgpKQ0KDQpsYXBwbHkobXlsaXN0LG1lYW4pDQojIERhdGFmcmFtZSANCg0KbXlkZjwtZGF0YS5mcmFtZShEYXkxPWMoMTo1KSxEYXkyPWMoMiw1LDYsNyw4KSxEYXkzPWMoMTAsMyw0LDcsOCkpDQoNCmxhcHBseShteWRmLG1lYW4pDQoNCmBgYA0KDQpgc2FwcGx5YCBzYXBwbHkob2JqZWN0LGZ1bmN0aW9uLC4uLi4pIG9iamVjdD1kYXRhZnJhbWUsIHZlY3RvciBvciBsaXN0ID09PT4gb3V0cHV0ID12ZWN0b3INCg0KYGBge3J9DQpzYXBwbHkobXlsaXN0LCBtZWFuKQ0KYGBgDQoNCg0K