- Write R scripts using the selection flow control for each of the
following.
- Determine the biggest number among three numbers.
num_list<-list()
num_list[1]<-as.integer(readline("Enter a number:"))
13
num_list[2]<-as.integer(readline("Enter a number:"))
2
num_list[3]<-as.integer(readline("Enter a number:"))
5
max_num <- num_list[1]
for (num in num_list){
if (num > max_num){
max_num<-num
}
}
print(max_num)
[[1]]
[1] 13
- A switch statement that displays Sunday, Monday, …, Saturday, if the
number is 0, 1, … 6.
num<-readline("Enter a number: ")
11
switch(num,
"0"="Monday",
"1"="Tuesday",
"2"="Wednesday",
"3"="Thursday",
"4"="Friday",
"5"="Saturday",
"6"="Sunday",
"Out of Bounds")
[1] "Out of Bounds"
- Determine whether the year is a leap year. A leap year is divisible
by 4 but not by 100. A leap year is also divisible by 400.
isLeapYear<-function(year){
if (year%%400==0 | (year%%4==0 & year%%100!=0)){
return(TRUE)
}
return(FALSE)
}
year<-as.integer(readline("Enter a year: "))
1904
isLeapYear(year)
[1] TRUE
- Write R scripts using the ifelse() function for each of the
following.
- Determine the positive and negative number in the vector.
nums <- sample(-10:10,5)
nums
[1] -4 0 10 1 4
for (num in nums){
print(ifelse(num<0,"Negative","Positive"))
}
[1] "Negative"
[1] "Positive"
[1] "Positive"
[1] "Positive"
[1] "Positive"
- Determine whether a character in the vector is uppercase or
lowercase letter.
letters=c("A","a","b","B")
for (letter in letters){
print(ifelse(letter==toupper(letter),"Uppercase","Lowercase"))
}
[1] "Uppercase"
[1] "Lowercase"
[1] "Lowercase"
[1] "Uppercase"
- Compare the numbers from two vectors to determine whether a number
is larger than, smaller than or equal to another number.
v1<-sample(1:10,2)
v2<-sample(1:10,2)
for (n1 in v1){
for (n2 in v2){
if (n1<n2){
print(paste(n1," is smaller than ",n2))
}else if (n1>n2){
print(paste(n1," is greater than ",n2))
}else{
print(paste(n1," is equal to ",n2))
}
}
}
[1] "10 is equal to 10"
[1] "10 is greater than 4"
[1] "8 is smaller than 10"
[1] "8 is greater than 4"
- Create an R file named calculator.r that stimulates a simple
calculator. It reads two numbers and an operator. If the operator is +,
the sum is printed; if it is -, the difference is printed; if it is x,
the multiplication is printed; if it is /, the quotient is printed.
nums<-readline("Enter two numbers: ")
11 14
nums<-strsplit(nums," ")
n1<-as.numeric(nums[[1]][1])
n2<-as.numeric(nums[[1]][2])
op<-readline("Enter operator: ")
*
switch(op,
"+"=print(paste(n1,op,n2,"=",n1+n2)),
"-"=print(paste(n1,op,n2,"=",n1-n2)),
"*"=print(paste(n1,op,n2,"=",n1*n2)),
"/"=print(paste(n1,op,n2,"=",n1/n2)),
"Unsupported operator")
[1] "11 * 14 = 154"
- Create an R file named circle.r. The script will ask user to enter
the radius of a circle and a coordinate point (x, y). Determine whether
the point is inside or outside the circle centered at (0, 0).
calcDist<-function(x,y){
return(sqrt(x**2+y**2))
}
r=readline("Enter the radius of the circle: ")
5
c=readline("Enter the coordinate x and y: ")
3 4
x=as.integer(strsplit(c," ")[[1]][1])
y=as.integer(strsplit(c," ")[[1]][2])
print(ifelse(calcDist(x,y)<=r,paste("(",x,",",y,") is in the circle"),paste("(",x,",",y,") is not in the circle")))
[1] "( 3 , 4 ) is in the circle"
- Write R statements using loop flow control for each of the
following
- Find the largest integer n so that n3 is less than 2000.
n<-0
while((n+1)**3<2000) {
n<-n+1
}
print(n)
[1] 12
- Compute the sum of the series: 1/25+2/24+3/23 … + 25/1 in two
decimal places.
total=0
for (i in 1:25){
total<-total+i/(26-i)
}
print(round(total,2))
[1] 74.21
- Display the first ten values of the Fibonacci sequence. Given the
formula f1 = 1, f2 =1, fn = fn-1 + fn-2.
fib<-function(n){
if (n<=2){return(1)}
return(fib(n-1)+fib(n-2))
}
for (i in 1:10){print(paste(i,":",fib(i)))}
[1] "1 : 1"
[1] "2 : 1"
[1] "3 : 2"
[1] "4 : 3"
[1] "5 : 5"
[1] "6 : 8"
[1] "7 : 13"
[1] "8 : 21"
[1] "9 : 34"
[1] "10 : 55"
- Create an R file named score.r. The script will calculate the
minimum, maximum, average and standard deviation (s) of the exam score
in a subject. The program will accept the score and quit if negative
score is entered.
num<-1
nums<-c()
while (num>0){
num<-readline("Enter a score [negative score to quit]: ")
if (num<0) break
nums<-c(nums,as.integer(num))
}
2
3
4
-1
print(paste("Minimum score",min(nums)))
[1] "Minimum score 2"
print(paste("Maximum score",max(nums)))
[1] "Maximum score 4"
print(paste("Average score",mean(nums)))
[1] "Average score 3"
print(paste("Standard deviation",sd(nums)))
[1] "Standard deviation 1"
- Create an R file named matrix.r. The script will ask user to enter M
and N. Create a matrix with M rows and N columns with random numbers
1-50. Display the matrix and then count the number of odd and even
numbers in the matrix
size<-readline("Enter M and N: ")
2 5
M<-as.integer(strsplit(size," ")[[1]][1])
N<-as.integer(strsplit(size," ")[[1]][2])
df<-matrix(sample(1:50,M*N),M,N)
odd<-0
even<-0
for (i in 1:M){
for (j in 1:N){
print(df[i,j])
if (df[i,j]%%2==0) {
even<-even+1
} else{
odd <-odd+1
}
}
}
[1] 23
[1] 2
[1] 3
[1] 4
[1] 37
[1] 27
[1] 50
[1] 28
[1] 36
[1] 31
print(paste("Number of odd numbers in the matrix:",odd))
[1] "Number of odd numbers in the matrix: 5"
print(paste("Number of even numbers in the matrix:",even))
[1] "Number of even numbers in the matrix: 5"
LS0tDQp0aXRsZTogIkxhYiA0Ig0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KMS4gV3JpdGUgUiBzY3JpcHRzIHVzaW5nIHRoZSBzZWxlY3Rpb24gZmxvdyBjb250cm9sIGZvciBlYWNoIG9mIHRoZSBmb2xsb3dpbmcuDQphLiBEZXRlcm1pbmUgdGhlIGJpZ2dlc3QgbnVtYmVyIGFtb25nIHRocmVlIG51bWJlcnMuDQpgYGB7cn0NCm51bV9saXN0PC1saXN0KCkNCm51bV9saXN0WzFdPC1hcy5pbnRlZ2VyKHJlYWRsaW5lKCJFbnRlciBhIG51bWJlcjoiKSkNCm51bV9saXN0WzJdPC1hcy5pbnRlZ2VyKHJlYWRsaW5lKCJFbnRlciBhIG51bWJlcjoiKSkNCm51bV9saXN0WzNdPC1hcy5pbnRlZ2VyKHJlYWRsaW5lKCJFbnRlciBhIG51bWJlcjoiKSkNCm1heF9udW0gPC0gbnVtX2xpc3RbMV0NCmZvciAobnVtIGluIG51bV9saXN0KXsNCiAgaWYgKG51bSA+IG1heF9udW0pew0KICAgIG1heF9udW08LW51bQ0KICB9DQp9DQpwcmludChtYXhfbnVtKQ0KDQpgYGANCg0KYi4gQSBzd2l0Y2ggc3RhdGVtZW50IHRoYXQgZGlzcGxheXMgU3VuZGF5LCBNb25kYXksIOKApiwgU2F0dXJkYXksIGlmIHRoZSBudW1iZXIgaXMgMCwgMSwgLi4uIDYuDQpgYGB7cn0NCm51bTwtcmVhZGxpbmUoIkVudGVyIGEgbnVtYmVyOiAiKQ0Kc3dpdGNoKG51bSwNCiAgICAgICAiMCI9Ik1vbmRheSIsDQogICAgICAgIjEiPSJUdWVzZGF5IiwNCiAgICAgICAiMiI9IldlZG5lc2RheSIsDQogICAgICAgIjMiPSJUaHVyc2RheSIsDQogICAgICAgIjQiPSJGcmlkYXkiLA0KICAgICAgICI1Ij0iU2F0dXJkYXkiLA0KICAgICAgICI2Ij0iU3VuZGF5IiwNCiAgICAgICAiT3V0IG9mIEJvdW5kcyIpDQpgYGANCg0KYy4gRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHllYXIgaXMgYSBsZWFwIHllYXIuIEEgbGVhcCB5ZWFyIGlzIGRpdmlzaWJsZSBieSA0IGJ1dCBub3QgYnkgMTAwLiBBIGxlYXAgeWVhciBpcyBhbHNvIGRpdmlzaWJsZSBieSA0MDAuDQpgYGB7cn0NCmlzTGVhcFllYXI8LWZ1bmN0aW9uKHllYXIpew0KICBpZiAoeWVhciUlNDAwPT0wIHwgKHllYXIlJTQ9PTAgJiB5ZWFyJSUxMDAhPTApKXsNCiAgICByZXR1cm4oVFJVRSkNCiAgfQ0KICByZXR1cm4oRkFMU0UpDQp9DQp5ZWFyPC1hcy5pbnRlZ2VyKHJlYWRsaW5lKCJFbnRlciBhIHllYXI6ICIpKQ0KaXNMZWFwWWVhcih5ZWFyKQ0KDQpgYGANCg0KDQoyLiBXcml0ZSBSIHNjcmlwdHMgdXNpbmcgdGhlIGlmZWxzZSgpIGZ1bmN0aW9uIGZvciBlYWNoIG9mIHRoZSBmb2xsb3dpbmcuDQphLiBEZXRlcm1pbmUgdGhlIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBudW1iZXIgaW4gdGhlIHZlY3Rvci4NCmBgYHtyfQ0KbnVtcyA8LSBzYW1wbGUoLTEwOjEwLDUpDQpudW1zDQpmb3IgKG51bSBpbiBudW1zKXsNCiAgcHJpbnQoaWZlbHNlKG51bTwwLCJOZWdhdGl2ZSIsIlBvc2l0aXZlIikpDQp9DQpgYGANCg0KYi4gRGV0ZXJtaW5lIHdoZXRoZXIgYSBjaGFyYWN0ZXIgaW4gdGhlIHZlY3RvciBpcyB1cHBlcmNhc2Ugb3IgbG93ZXJjYXNlIGxldHRlci4NCmBgYHtyfQ0KbGV0dGVycz1jKCJBIiwiYSIsImIiLCJCIikNCmZvciAobGV0dGVyIGluIGxldHRlcnMpew0KICBwcmludChpZmVsc2UobGV0dGVyPT10b3VwcGVyKGxldHRlciksIlVwcGVyY2FzZSIsIkxvd2VyY2FzZSIpKQ0KfQ0KYGBgDQoNCmMuIENvbXBhcmUgdGhlIG51bWJlcnMgZnJvbSB0d28gdmVjdG9ycyB0byBkZXRlcm1pbmUgd2hldGhlciBhIG51bWJlciBpcyBsYXJnZXIgdGhhbiwgc21hbGxlciB0aGFuIG9yIGVxdWFsIHRvIGFub3RoZXIgbnVtYmVyLg0KYGBge3J9DQp2MTwtc2FtcGxlKDE6MTAsMikNCnYyPC1zYW1wbGUoMToxMCwyKQ0KZm9yIChuMSBpbiB2MSl7DQogIGZvciAobjIgaW4gdjIpew0KICAgIGlmIChuMTxuMil7DQogICAgICBwcmludChwYXN0ZShuMSwiIGlzIHNtYWxsZXIgdGhhbiAiLG4yKSkNCiAgICB9ZWxzZSBpZiAobjE+bjIpew0KICAgICAgcHJpbnQocGFzdGUobjEsIiBpcyBncmVhdGVyIHRoYW4gIixuMikpDQogICAgfWVsc2V7DQogICAgICBwcmludChwYXN0ZShuMSwiIGlzIGVxdWFsIHRvICIsbjIpKQ0KICAgIH0NCiAgfQ0KfQ0KYGBgDQoNCg0KMy4gQ3JlYXRlIGFuIFIgZmlsZSBuYW1lZCBjYWxjdWxhdG9yLnIgdGhhdCBzdGltdWxhdGVzIGEgc2ltcGxlIGNhbGN1bGF0b3IuIEl0IHJlYWRzIHR3byBudW1iZXJzIGFuZCBhbiBvcGVyYXRvci4gSWYgdGhlIG9wZXJhdG9yIGlzICssIHRoZSBzdW0gaXMgcHJpbnRlZDsgaWYgaXQgaXMgLSwgdGhlIGRpZmZlcmVuY2UgaXMgcHJpbnRlZDsgaWYgaXQgaXMgeCwgdGhlIG11bHRpcGxpY2F0aW9uIGlzIHByaW50ZWQ7IGlmIGl0IGlzIC8sIHRoZSBxdW90aWVudCBpcyBwcmludGVkLg0KYGBge3J9DQpudW1zPC1yZWFkbGluZSgiRW50ZXIgdHdvIG51bWJlcnM6ICIpDQpudW1zPC1zdHJzcGxpdChudW1zLCIgIikNCm4xPC1hcy5udW1lcmljKG51bXNbWzFdXVsxXSkNCm4yPC1hcy5udW1lcmljKG51bXNbWzFdXVsyXSkNCm9wPC1yZWFkbGluZSgiRW50ZXIgb3BlcmF0b3I6ICIpDQpzd2l0Y2gob3AsDQogICAgICAgIisiPXByaW50KHBhc3RlKG4xLG9wLG4yLCI9IixuMStuMikpLA0KICAgICAgICItIj1wcmludChwYXN0ZShuMSxvcCxuMiwiPSIsbjEtbjIpKSwNCiAgICAgICAieCI9cHJpbnQocGFzdGUobjEsb3AsbjIsIj0iLG4xKm4yKSksDQogICAgICAgIi8iPXByaW50KHBhc3RlKG4xLG9wLG4yLCI9IixuMS9uMikpLA0KICAgICAgICJVbnN1cHBvcnRlZCBvcGVyYXRvciIpDQoNCmBgYA0KDQoNCjQuIENyZWF0ZSBhbiBSIGZpbGUgbmFtZWQgY2lyY2xlLnIuIFRoZSBzY3JpcHQgd2lsbCBhc2sgdXNlciB0byBlbnRlciB0aGUgcmFkaXVzIG9mIGEgY2lyY2xlIGFuZCBhIGNvb3JkaW5hdGUgcG9pbnQgKHgsIHkpLiBEZXRlcm1pbmUgd2hldGhlciB0aGUgcG9pbnQgaXMgaW5zaWRlIG9yIG91dHNpZGUgdGhlIGNpcmNsZSBjZW50ZXJlZCBhdCAoMCwgMCkuDQpgYGB7cn0NCmNhbGNEaXN0PC1mdW5jdGlvbih4LHkpew0KICByZXR1cm4oc3FydCh4KioyK3kqKjIpKQ0KfQ0Kcj1yZWFkbGluZSgiRW50ZXIgdGhlIHJhZGl1cyBvZiB0aGUgY2lyY2xlOiAiKQ0KYz1yZWFkbGluZSgiRW50ZXIgdGhlIGNvb3JkaW5hdGUgeCBhbmQgeTogIikNCng9YXMuaW50ZWdlcihzdHJzcGxpdChjLCIgIilbWzFdXVsxXSkNCnk9YXMuaW50ZWdlcihzdHJzcGxpdChjLCIgIilbWzFdXVsyXSkNCnByaW50KGlmZWxzZShjYWxjRGlzdCh4LHkpPD1yLHBhc3RlKCIoIix4LCIsIix5LCIpIGlzIGluIHRoZSBjaXJjbGUiKSxwYXN0ZSgiKCIseCwiLCIseSwiKSBpcyBub3QgaW4gdGhlIGNpcmNsZSIpKSkNCmBgYA0KDQo1LiBXcml0ZSBSIHN0YXRlbWVudHMgdXNpbmcgbG9vcCBmbG93IGNvbnRyb2wgZm9yIGVhY2ggb2YgdGhlIGZvbGxvd2luZw0KYS4gRmluZCB0aGUgbGFyZ2VzdCBpbnRlZ2VyIG4gc28gdGhhdCBuMyBpcyBsZXNzIHRoYW4gMjAwMC4NCmBgYHtyfQ0KbjwtMA0Kd2hpbGUoKG4rMSkqKjM8MjAwMCkgew0KICBuPC1uKzENCn0NCnByaW50KG4pDQpgYGANCg0KYi4gQ29tcHV0ZSB0aGUgc3VtIG9mIHRoZSBzZXJpZXM6IDEvMjUrMi8yNCszLzIzIOKApiArIDI1LzEgaW4gdHdvIGRlY2ltYWwgcGxhY2VzLg0KYGBge3J9DQp0b3RhbD0wDQpmb3IgKGkgaW4gMToyNSl7DQogIHRvdGFsPC10b3RhbCtpLygyNi1pKQ0KfQ0KcHJpbnQocm91bmQodG90YWwsMikpDQpgYGANCg0KYy4gRGlzcGxheSB0aGUgZmlyc3QgdGVuIHZhbHVlcyBvZiB0aGUgRmlib25hY2NpIHNlcXVlbmNlLiBHaXZlbiB0aGUgZm9ybXVsYSBmMSA9IDEsIGYyID0xLCBmbiA9IGZuLTEgKyBmbi0yLiANCmBgYHtyfQ0KZmliPC1mdW5jdGlvbihuKXsNCiAgaWYgKG48PTIpe3JldHVybigxKX0NCiAgcmV0dXJuKGZpYihuLTEpK2ZpYihuLTIpKQ0KfQ0KZm9yIChpIGluIDE6MTApe3ByaW50KHBhc3RlKGksIjoiLGZpYihpKSkpfQ0KDQpgYGANCg0KDQo2LiBDcmVhdGUgYW4gUiBmaWxlIG5hbWVkIHNjb3JlLnIuIFRoZSBzY3JpcHQgd2lsbCBjYWxjdWxhdGUgdGhlIG1pbmltdW0sIG1heGltdW0sIGF2ZXJhZ2UgYW5kIHN0YW5kYXJkIGRldmlhdGlvbiAocykgDQpvZiB0aGUgZXhhbSBzY29yZSBpbiBhIHN1YmplY3QuIFRoZSBwcm9ncmFtIHdpbGwgYWNjZXB0IHRoZSBzY29yZSBhbmQgcXVpdCBpZiBuZWdhdGl2ZSBzY29yZSBpcyBlbnRlcmVkLg0KYGBge3J9DQpudW08LTENCm51bXM8LWMoKQ0Kd2hpbGUgKG51bT4wKXsNCiAgbnVtPC1yZWFkbGluZSgiRW50ZXIgYSBzY29yZSBbbmVnYXRpdmUgc2NvcmUgdG8gcXVpdF06ICIpDQogIGlmIChudW08MCkgYnJlYWsNCiAgbnVtczwtYyhudW1zLGFzLmludGVnZXIobnVtKSkNCn0NCg0KcHJpbnQocGFzdGUoIk1pbmltdW0gc2NvcmUiLG1pbihudW1zKSkpDQpwcmludChwYXN0ZSgiTWF4aW11bSBzY29yZSIsbWF4KG51bXMpKSkNCnByaW50KHBhc3RlKCJBdmVyYWdlIHNjb3JlIixtZWFuKG51bXMpKSkNCnByaW50KHBhc3RlKCJTdGFuZGFyZCBkZXZpYXRpb24iLHNkKG51bXMpKSkNCg0KYGBgDQoNCg0KNy4gQ3JlYXRlIGFuIFIgZmlsZSBuYW1lZCBtYXRyaXguci4gVGhlIHNjcmlwdCB3aWxsIGFzayB1c2VyIHRvIGVudGVyIE0gYW5kIE4uIENyZWF0ZSBhIG1hdHJpeCB3aXRoIE0gcm93cyBhbmQgTiBjb2x1bW5zIHdpdGggcmFuZG9tIG51bWJlcnMgMS01MC4gRGlzcGxheSB0aGUgbWF0cml4IGFuZCB0aGVuIGNvdW50IHRoZSBudW1iZXIgb2Ygb2RkIGFuZCBldmVuIG51bWJlcnMgaW4gdGhlIG1hdHJpeA0KDQpgYGB7cn0NCnNpemU8LXJlYWRsaW5lKCJFbnRlciBNIGFuZCBOOiAiKQ0KTTwtYXMuaW50ZWdlcihzdHJzcGxpdChzaXplLCIgIilbWzFdXVsxXSkNCk48LWFzLmludGVnZXIoc3Ryc3BsaXQoc2l6ZSwiICIpW1sxXV1bMl0pDQpkZjwtbWF0cml4KHNhbXBsZSgxOjUwLE0qTiksTSxOKQ0Kb2RkPC0wDQpldmVuPC0wDQpmb3IgKGkgaW4gMTpNKXsNCiAgZm9yIChqIGluIDE6Til7DQogICAgcHJpbnQoZGZbaSxqXSkNCiAgICBpZiAoZGZbaSxqXSUlMj09MCkgew0KICAgICAgZXZlbjwtZXZlbisxDQogICAgfSBlbHNlew0KICAgICAgb2RkIDwtb2RkKzENCiAgICB9DQogIH0NCn0NCnByaW50KHBhc3RlKCJOdW1iZXIgb2Ygb2RkIG51bWJlcnMgaW4gdGhlIG1hdHJpeDoiLG9kZCkpDQpwcmludChwYXN0ZSgiTnVtYmVyIG9mIGV2ZW4gbnVtYmVycyBpbiB0aGUgbWF0cml4OiIsZXZlbikpDQpgYGANCg0K