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" 

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=