If - else
Using if and else-
> n <- 21
> if(n %% 2 == 1){
+ cat(n," is odd")
+ }else{
+ cat(n," is even")
+ }
21 is odd
Tips: Use the following line of code to take input from user as integer-
n <- as.integer(readline())
Qualified programming assignment help.
> n <- 6
> if(n %% 2 == 1){
+ cat(n," is odd")
+ }else{
+ cat(n," is even")
+ }
6 is even
If-else can be used in one line also -
> a <- -4
> if(a>0) {"positive"} else {"Negative"}
[1] "Negative"
> a <- 3
> if(a>0) "positive" else "Negative" # {} is not necessary in this case
[1] "positive"
So this can be assigned in any new variable for further calculation -
> a <- -4
> b <- if(a>0) "positive" else "Negative"
> b
[1] "Negative"
if - else if - else
Using else if-
> if(T){
+ cat('First line is True')
+ }else if(F){
+ cat('Second line is true')
+ }
First line is True
> if(F){
+ cat('First line is True')
+ }else if(T){
+ cat('Second line is True')
+ }
Second line is True
> if(F){
+ cat('First line is True')
+ }else if(F){
+ cat('Second line is True')
+ }else if(T){
+ cat('Third line is True')
+ }
Third line is True
Using if, else if and else-
> if(F){
+ cat('First line is True')
+ }else if(F){
+ cat('Second line is true')
+ }else{
+ cat('Last line is True')
+ }
Last line is True
ifelse
Using ifelse for single line code-
> num <- -3:3
> ifelse(num == 0, NA, num/2)
[1] -1.5 -1.0 -0.5 NA 0.5 1.0 1.5
> num <- -3:3
> ifelse(num %% 2 == 0, "Even", "Odd")
[1] "Odd" "Even" "Odd" "Even" "Odd" "Even" "Odd"
Nested ifelse-
> num <- -3:3
> ifelse(num == 0, "Zero", ifelse( num <0, "Negative", "Positive"))
[1] "Negative" "Negative" "Negative" "Zero" "Positive" "Positive" "Positive"
The Switch Function
The following code can be re-written simply by using switch-
> MyStr <- "d"
> if (MyStr=="a"){
+ res <- 12
+ } else if(MyStr=="b"){
+ res <- 24
+ } else if(MyStr=="c"){
+ res <- 50
+ } else if(MyStr=="d"){
+ res <- 100
+ } else{
+ res <- NA
+ }
> res
[1] 100
The use of switch-
> MyStr <- "d"
> res <- switch(EXPR=MyStr, a=12, b=24, c=50, d=100, NA)
> res
[1] 100
> switch("c", a=12, b=24, c=50, d=100, NA)
[1] 50
> switch("f", a=12, b=24, c=50, d=100, NA)
[1] NA
In the following example 4th positional matching is taken using switch-
> MyStr <- 4
> res <- switch(MyStr, 12, 24, 50, 100, NA) # 12 to NA is untagged
> res
[1] 100
Similarly-
> switch(2, 12, 24, 50, 100, NA)
[1] 24
> switch(5, 12, 24, 50, 100, NA)
[1] NA
Any other value of mynum (less than 1 or greater than the number of arguments) will return NULL.
> res <- switch(0, 12, 24, 50, 100, NA)
> res
NULL
> res <- switch(10, 12, 24, 50, 100, NA)
> res
NULL
> lowdose <- 25
> highdose <- 58
> doselevel <- factor(c("Low","High","High","High","Low","Med",
+ "Med"), levels=c("Low","Med","High"))
> dosage <- c(10, 60, 50, 10, 18, 30, 25.3)
> ifelse(dosage>=highdose,"High",
+ ifelse(dosage<=highdose & dosage>=lowdose, "Mid","Low"))
[1] "Low" "High" "Mid" "Low" "Low" "Mid" "Mid"
next
The following code is an example of next. When 0 comes the code skips to the next number-
> num <- -3:3
> for (i in 1:length(num)){
+ if (num[i]!=0){
+ cat(num[i]," ")
+ }else{
+ cat('skipping zero ')
+ next
+ }
+ }
-3 -2 -1 skipping zero 1 2 3
break
The following code is an example of break. When the number is greater than zero the assignment of number to ‘sho’ is stopped and the result is shown with NA in unassigned places-
> num <- -3:3
> sho <- rep(NA, length(num))
> for (i in 1:length(num)){
+ if(num[i]<=0){
+ sho[i] <- num[i]
+ }else{
+ cat(sho)
+ break
+ }
+ }
-3 -2 -1 0 NA NA NA
LS0tDQp0aXRsZTogIkNvbmRpdGlvbmFscyINCmF1dGhvcjogIk1EIEFIU0FOVUwgSVNMQU0iDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIHRvY19kZXB0aDogNA0KICAgIHRoZW1lOiBjZXJ1bGVhbg0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCi0tLQ0KYGBge3IsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoDQogIGNvbW1lbnQgPSAiIiwgcHJvbXB0ID0gVFJVRQ0KKQ0KYGBgDQoNCi0tLQ0KDQojIyMgSWYgLSBlbHNlDQoNClVzaW5nIGBpZmAgYW5kIGBlbHNlYC0NCmBgYHtyfQ0KbiA8LSAyMQ0KaWYobiAlJSAyID09IDEpew0KICBjYXQobiwiIGlzIG9kZCIpDQp9ZWxzZXsNCiAgY2F0KG4sIiBpcyBldmVuIikNCn0NCmBgYA0KDQpUaXBzOiBVc2UgdGhlIGZvbGxvd2luZyBsaW5lIG9mIGNvZGUgdG8gdGFrZSBpbnB1dCBmcm9tIHVzZXIgYXMgaW50ZWdlci0gICANCipuIDwtIGFzLmludGVnZXIocmVhZGxpbmUoKSkqDQoNClF1YWxpZmllZCBbcHJvZ3JhbW1pbmcgYXNzaWdubWVudCBoZWxwXShodHRwczovL3d3dy5ob21ld29ya2hlbHBvbmxpbmUubmV0ICJQcm9ncmFtbWluZyBhc3NpZ25tZW50IGhlbHAiKS4NCg0KYGBge3J9DQpuIDwtIDYNCmlmKG4gJSUgMiA9PSAxKXsNCiAgY2F0KG4sIiBpcyBvZGQiKQ0KfWVsc2V7DQogIGNhdChuLCIgaXMgZXZlbiIpDQp9DQpgYGANCg0KSWYtZWxzZSBjYW4gYmUgdXNlZCBpbiBvbmUgbGluZSBhbHNvIC0gDQoNCmBgYHtyfQ0KYSA8LSAtNA0KaWYoYT4wKSB7InBvc2l0aXZlIn0gZWxzZSB7Ik5lZ2F0aXZlIn0NCmEgPC0gMw0KaWYoYT4wKSAicG9zaXRpdmUiIGVsc2UgIk5lZ2F0aXZlIiAgIyB7fSBpcyBub3QgbmVjZXNzYXJ5IGluIHRoaXMgY2FzZQ0KYGBgDQpTbyB0aGlzIGNhbiBiZSBhc3NpZ25lZCBpbiBhbnkgbmV3IHZhcmlhYmxlIGZvciBmdXJ0aGVyIGNhbGN1bGF0aW9uIC0gDQpgYGB7cn0NCmEgPC0gLTQNCmIgPC0gaWYoYT4wKSAicG9zaXRpdmUiIGVsc2UgIk5lZ2F0aXZlIg0KYg0KYGBgDQoNCiMjIyBpZiAtIGVsc2UgaWYgIC0gZWxzZQ0KDQpVc2luZyBgZWxzZSBpZmAtDQpgYGB7cn0NCmlmKFQpew0KICBjYXQoJ0ZpcnN0IGxpbmUgaXMgVHJ1ZScpDQp9ZWxzZSBpZihGKXsNCiAgY2F0KCdTZWNvbmQgbGluZSBpcyB0cnVlJykNCn0NCmBgYA0KDQoNCmBgYHtyfQ0KaWYoRil7DQogIGNhdCgnRmlyc3QgbGluZSBpcyBUcnVlJykNCn1lbHNlIGlmKFQpew0KICBjYXQoJ1NlY29uZCBsaW5lIGlzIFRydWUnKQ0KfQ0KYGBgDQoNCg0KYGBge3J9DQppZihGKXsNCiAgY2F0KCdGaXJzdCBsaW5lIGlzIFRydWUnKQ0KfWVsc2UgaWYoRil7DQogIGNhdCgnU2Vjb25kIGxpbmUgaXMgVHJ1ZScpDQp9ZWxzZSBpZihUKXsNCiAgY2F0KCdUaGlyZCBsaW5lIGlzIFRydWUnKQ0KfQ0KYGBgDQoNClVzaW5nIGBpZmAsIGBlbHNlIGlmYCBhbmQgYGVsc2VgLQ0KYGBge3J9DQppZihGKXsNCiAgY2F0KCdGaXJzdCBsaW5lIGlzIFRydWUnKQ0KfWVsc2UgaWYoRil7DQogIGNhdCgnU2Vjb25kIGxpbmUgaXMgdHJ1ZScpDQp9ZWxzZXsNCiAgY2F0KCdMYXN0IGxpbmUgaXMgVHJ1ZScpDQp9DQpgYGANCg0KIyMjIGlmZWxzZQ0KDQpVc2luZyBgaWZlbHNlYCBmb3Igc2luZ2xlIGxpbmUgY29kZS0NCmBgYHtyfQ0KbnVtIDwtIC0zOjMNCmlmZWxzZShudW0gPT0gMCwgTkEsIG51bS8yKQ0KYGBgDQpgYGB7cn0NCm51bSA8LSAtMzozDQppZmVsc2UobnVtICUlIDIgPT0gMCwgIkV2ZW4iLCAiT2RkIikNCmBgYA0KDQpOZXN0ZWQgYGlmZWxzZWAtDQpgYGB7cn0NCm51bSA8LSAtMzozDQppZmVsc2UobnVtID09IDAsICJaZXJvIiwgaWZlbHNlKCBudW0gPDAsICJOZWdhdGl2ZSIsICJQb3NpdGl2ZSIpKQ0KYGBgDQoNCiMjIyBUaGUgU3dpdGNoIEZ1bmN0aW9uDQoNClRoZSBmb2xsb3dpbmcgY29kZSBjYW4gYmUgcmUtd3JpdHRlbiBzaW1wbHkgYnkgdXNpbmcgYHN3aXRjaGAtDQpgYGB7cn0NCk15U3RyIDwtICJkIg0KaWYgKE15U3RyPT0iYSIpew0KICByZXMgPC0gMTINCn0gZWxzZSBpZihNeVN0cj09ImIiKXsNCiAgcmVzIDwtIDI0DQp9IGVsc2UgaWYoTXlTdHI9PSJjIil7DQogIHJlcyA8LSA1MA0KfSBlbHNlIGlmKE15U3RyPT0iZCIpew0KICByZXMgPC0gMTAwDQp9IGVsc2V7DQogIHJlcyA8LSBOQQ0KfQ0KcmVzDQpgYGANCg0KVGhlIHVzZSBvZiBgc3dpdGNoYC0NCmBgYHtyfQ0KTXlTdHIgPC0gImQiDQpyZXMgPC0gc3dpdGNoKEVYUFI9TXlTdHIsIGE9MTIsIGI9MjQsIGM9NTAsIGQ9MTAwLCBOQSkNCnJlcw0KYGBgDQoNCg0KYGBge3J9DQpzd2l0Y2goImMiLCBhPTEyLCBiPTI0LCBjPTUwLCBkPTEwMCwgTkEpDQpgYGANCmBgYHtyfQ0Kc3dpdGNoKCJmIiwgYT0xMiwgYj0yNCwgYz01MCwgZD0xMDAsIE5BKQ0KYGBgDQpJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUgNHRoIHBvc2l0aW9uYWwgbWF0Y2hpbmcgaXMgdGFrZW4gdXNpbmcgc3dpdGNoLQ0KYGBge3J9DQpNeVN0ciA8LSA0DQpyZXMgPC0gc3dpdGNoKE15U3RyLCAxMiwgMjQsIDUwLCAxMDAsIE5BKSAjIDEyIHRvIE5BIGlzIHVudGFnZ2VkDQpyZXMNCmBgYA0KU2ltaWxhcmx5LQ0KYGBge3J9DQpzd2l0Y2goMiwgMTIsIDI0LCA1MCwgMTAwLCBOQSkNCmBgYA0KYGBge3J9DQpzd2l0Y2goNSwgMTIsIDI0LCA1MCwgMTAwLCBOQSkNCmBgYA0KDQpBbnkgb3RoZXIgdmFsdWUgb2YgbXludW0gKGxlc3MgdGhhbiAxIG9yIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cykgd2lsbCByZXR1cm4gTlVMTC4NCmBgYHtyfQ0KcmVzIDwtIHN3aXRjaCgwLCAxMiwgMjQsIDUwLCAxMDAsIE5BKQ0KcmVzDQpgYGANCg0KYGBge3J9DQpyZXMgPC0gc3dpdGNoKDEwLCAxMiwgMjQsIDUwLCAxMDAsIE5BKQ0KcmVzDQpgYGANCg0KYGBge3J9DQpsb3dkb3NlIDwtIDI1DQpoaWdoZG9zZSA8LSA1OA0KZG9zZWxldmVsIDwtIGZhY3RvcihjKCJMb3ciLCJIaWdoIiwiSGlnaCIsIkhpZ2giLCJMb3ciLCJNZWQiLA0KIk1lZCIpLCBsZXZlbHM9YygiTG93IiwiTWVkIiwiSGlnaCIpKQ0KZG9zYWdlIDwtIGMoMTAsIDYwLCA1MCwgMTAsIDE4LCAzMCwgMjUuMykNCmlmZWxzZShkb3NhZ2U+PWhpZ2hkb3NlLCJIaWdoIiwNCiAgICAgICBpZmVsc2UoZG9zYWdlPD1oaWdoZG9zZSAmIGRvc2FnZT49bG93ZG9zZSwgIk1pZCIsIkxvdyIpKQ0KYGBgDQoNCiMjIyBuZXh0DQoNClRoZSBmb2xsb3dpbmcgY29kZSBpcyBhbiBleGFtcGxlIG9mIGBuZXh0YC4gV2hlbiAwIGNvbWVzIHRoZSBjb2RlIHNraXBzIHRvIHRoZSBuZXh0IG51bWJlci0NCmBgYHtyfQ0KbnVtIDwtIC0zOjMNCmZvciAoaSBpbiAxOmxlbmd0aChudW0pKXsNCiAgaWYgKG51bVtpXSE9MCl7DQogIGNhdChudW1baV0sIiAiKQ0KICB9ZWxzZXsNCiAgICBjYXQoJ3NraXBwaW5nIHplcm8gJykNCiAgICBuZXh0DQogIH0NCn0NCmBgYA0KDQojIyMgYnJlYWsNClRoZSBmb2xsb3dpbmcgY29kZSBpcyBhbiBleGFtcGxlIG9mIGBicmVha2AuIFdoZW4gdGhlIG51bWJlciBpcyBncmVhdGVyIHRoYW4gemVybyB0aGUgYXNzaWdubWVudCBvZiBudW1iZXIgdG8gJ3NobycgaXMgc3RvcHBlZCBhbmQgdGhlIHJlc3VsdCBpcyBzaG93biB3aXRoIE5BIGluIHVuYXNzaWduZWQgcGxhY2VzLQ0KYGBge3J9DQpudW0gPC0gLTM6Mw0Kc2hvIDwtIHJlcChOQSwgbGVuZ3RoKG51bSkpDQpmb3IgKGkgaW4gMTpsZW5ndGgobnVtKSl7DQogIGlmKG51bVtpXTw9MCl7DQogICAgc2hvW2ldIDwtIG51bVtpXQ0KICB9ZWxzZXsNCiAgICBjYXQoc2hvKQ0KICAgIGJyZWFrDQogIH0NCn0NCmBgYA0KDQo=