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