# Mindanao State University
# General Santos City
# Mathematics Department
# April 04, 2023
#
# Basic Programming in R
# Submitte by: Alwyn E Felisilda
# Single for loop
# Example 1: This example will print the line I hate you for 3 times
for (i in 1:3) {
print("I hate you")
}
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
# Example 2: This example will print the line I hate you for 4 times
for (i in 4:7) {
print("I hate you")
}
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
# Examole 3: This example will print the line I hate you for 100 times
lim = 30
for (i in 1:lim) {
print("I hate you")
}
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
## [1] "I hate you"
# Imagine yourself writing down the sentence "I hate you." for 1000 times.
# Example 4: This example will print the line I hate you for 1000 times
lim = 30
for (i in 1:lim) {
print(paste0(i,". ","I hate you"))
}
## [1] "1. I hate you"
## [1] "2. I hate you"
## [1] "3. I hate you"
## [1] "4. I hate you"
## [1] "5. I hate you"
## [1] "6. I hate you"
## [1] "7. I hate you"
## [1] "8. I hate you"
## [1] "9. I hate you"
## [1] "10. I hate you"
## [1] "11. I hate you"
## [1] "12. I hate you"
## [1] "13. I hate you"
## [1] "14. I hate you"
## [1] "15. I hate you"
## [1] "16. I hate you"
## [1] "17. I hate you"
## [1] "18. I hate you"
## [1] "19. I hate you"
## [1] "20. I hate you"
## [1] "21. I hate you"
## [1] "22. I hate you"
## [1] "23. I hate you"
## [1] "24. I hate you"
## [1] "25. I hate you"
## [1] "26. I hate you"
## [1] "27. I hate you"
## [1] "28. I hate you"
## [1] "29. I hate you"
## [1] "30. I hate you"
# new R command illustrated to connect the index and the sentence
# Example 5: This example will print the line I hate you for 1000 times
lim = 30
for (i in 1:lim) {
print(noquote(paste0(i,". ","I hate you")))
}
## [1] 1. I hate you
## [1] 2. I hate you
## [1] 3. I hate you
## [1] 4. I hate you
## [1] 5. I hate you
## [1] 6. I hate you
## [1] 7. I hate you
## [1] 8. I hate you
## [1] 9. I hate you
## [1] 10. I hate you
## [1] 11. I hate you
## [1] 12. I hate you
## [1] 13. I hate you
## [1] 14. I hate you
## [1] 15. I hate you
## [1] 16. I hate you
## [1] 17. I hate you
## [1] 18. I hate you
## [1] 19. I hate you
## [1] 20. I hate you
## [1] 21. I hate you
## [1] 22. I hate you
## [1] 23. I hate you
## [1] 24. I hate you
## [1] 25. I hate you
## [1] 26. I hate you
## [1] 27. I hate you
## [1] 28. I hate you
## [1] 29. I hate you
## [1] 30. I hate you
# i want clean output
# Example 6: This example will count the number of times the task is repeated
counter = 0
lim = 10
for (i in 351:lim) {
counter = counter + 1 # increment the counter for each i
}
print(noquote(paste0("The value of counter variable is ", counter, ".")))
## [1] The value of counter variable is 342.
# Example 7: This example will display and count the number of lines
startval = 1
endval = 30
counter = 0
txtline = "I like you now."
for (i in startval:endval) {
counter = counter + 1
print(noquote(paste0(counter,". ",txtline)))
}
## [1] 1. I like you now.
## [1] 2. I like you now.
## [1] 3. I like you now.
## [1] 4. I like you now.
## [1] 5. I like you now.
## [1] 6. I like you now.
## [1] 7. I like you now.
## [1] 8. I like you now.
## [1] 9. I like you now.
## [1] 10. I like you now.
## [1] 11. I like you now.
## [1] 12. I like you now.
## [1] 13. I like you now.
## [1] 14. I like you now.
## [1] 15. I like you now.
## [1] 16. I like you now.
## [1] 17. I like you now.
## [1] 18. I like you now.
## [1] 19. I like you now.
## [1] 20. I like you now.
## [1] 21. I like you now.
## [1] 22. I like you now.
## [1] 23. I like you now.
## [1] 24. I like you now.
## [1] 25. I like you now.
## [1] 26. I like you now.
## [1] 27. I like you now.
## [1] 28. I like you now.
## [1] 29. I like you now.
## [1] 30. I like you now.
print(noquote(paste0("There are ", counter, " lines generated.")))
## [1] There are 30 lines generated.
# Example 8: This example will display and count the number of lines
startval = 1
endval = 30
counter = 0
txtline = "I like you now."
for (i in startval:endval) {
counter = counter + 1
print(noquote(paste0(counter,". ",txtline)))
}
## [1] 1. I like you now.
## [1] 2. I like you now.
## [1] 3. I like you now.
## [1] 4. I like you now.
## [1] 5. I like you now.
## [1] 6. I like you now.
## [1] 7. I like you now.
## [1] 8. I like you now.
## [1] 9. I like you now.
## [1] 10. I like you now.
## [1] 11. I like you now.
## [1] 12. I like you now.
## [1] 13. I like you now.
## [1] 14. I like you now.
## [1] 15. I like you now.
## [1] 16. I like you now.
## [1] 17. I like you now.
## [1] 18. I like you now.
## [1] 19. I like you now.
## [1] 20. I like you now.
## [1] 21. I like you now.
## [1] 22. I like you now.
## [1] 23. I like you now.
## [1] 24. I like you now.
## [1] 25. I like you now.
## [1] 26. I like you now.
## [1] 27. I like you now.
## [1] 28. I like you now.
## [1] 29. I like you now.
## [1] 30. I like you now.
print(noquote(paste0("There are ", counter, " lines generated.")))
## [1] There are 30 lines generated.
# Example 9: This example will display and count the number of lines
# until a pre defined limit is reached
# This means you can terminate the looping process
startval = 1
endval = 30
counter = 0
txtline = "I like you now."
stop = 64
for (i in startval:endval) {
counter = counter + 1
print(noquote(paste0(counter,". ",txtline)))
if (counter == stop) break ## break means stop or exit the loop
}
## [1] 1. I like you now.
## [1] 2. I like you now.
## [1] 3. I like you now.
## [1] 4. I like you now.
## [1] 5. I like you now.
## [1] 6. I like you now.
## [1] 7. I like you now.
## [1] 8. I like you now.
## [1] 9. I like you now.
## [1] 10. I like you now.
## [1] 11. I like you now.
## [1] 12. I like you now.
## [1] 13. I like you now.
## [1] 14. I like you now.
## [1] 15. I like you now.
## [1] 16. I like you now.
## [1] 17. I like you now.
## [1] 18. I like you now.
## [1] 19. I like you now.
## [1] 20. I like you now.
## [1] 21. I like you now.
## [1] 22. I like you now.
## [1] 23. I like you now.
## [1] 24. I like you now.
## [1] 25. I like you now.
## [1] 26. I like you now.
## [1] 27. I like you now.
## [1] 28. I like you now.
## [1] 29. I like you now.
## [1] 30. I like you now.
print(noquote(paste0("There are ", counter, " lines generated.")))
## [1] There are 30 lines generated.
# Example 10: This example will display and count the number of lines
# until a pre defined limit is reached
# This means you can terminate the looping process
# with the added condition that we display only the line if the
# value of the index is even
# Recall: A number is even if it is divisible by 2, meaning if the remainder is 0
# when that number is divided by 2
startval = 1
endval = 30
counter = 0
txtline = "I like you now."
stop = 64
for (Age in startval:endval){
# test if Age is an even number
if((Age %% 2) == 0) {
counter = counter + 1
print(noquote(paste0(counter,". ",txtline)))
if (counter == stop) break ## break means stop or exit the loop
}
}
## [1] 1. I like you now.
## [1] 2. I like you now.
## [1] 3. I like you now.
## [1] 4. I like you now.
## [1] 5. I like you now.
## [1] 6. I like you now.
## [1] 7. I like you now.
## [1] 8. I like you now.
## [1] 9. I like you now.
## [1] 10. I like you now.
## [1] 11. I like you now.
## [1] 12. I like you now.
## [1] 13. I like you now.
## [1] 14. I like you now.
## [1] 15. I like you now.
print(noquote(paste0("There are ", counter, " lines generated.")))
## [1] There are 15 lines generated.
# The output is similar to the previous block.
# Example 11: This example will display and count the number of lines
# until a pre defined limit is reached
# This means you can terminate the looping process
# with the added condition that we display only the line if the
# value of the index is even
# Recall: A number is even if it is divisible by 2, meaning if the remainder is 0
# when that number is divided by 2
startval = 1
endval = 30
counter = 0
txtline = "I like you now."
stop = 64
for (Age in startval:endval){
if((Age %% 2) == 0) {
counter = counter + 1
print(noquote(paste0(counter,") ",Age,". ",txtline)))
if (counter == stop) break ## break means stop or exit the loop
}
}
## [1] 1) 2. I like you now.
## [1] 2) 4. I like you now.
## [1] 3) 6. I like you now.
## [1] 4) 8. I like you now.
## [1] 5) 10. I like you now.
## [1] 6) 12. I like you now.
## [1] 7) 14. I like you now.
## [1] 8) 16. I like you now.
## [1] 9) 18. I like you now.
## [1] 10) 20. I like you now.
## [1] 11) 22. I like you now.
## [1] 12) 24. I like you now.
## [1] 13) 26. I like you now.
## [1] 14) 28. I like you now.
## [1] 15) 30. I like you now.
print(noquote(paste0("There are ", counter, " lines generated.")))
## [1] There are 15 lines generated.
# Did you see the sequence of even numbers.
# Example 12: Using arrays and count occurrence of values
# We will use the alphabet in small and capital letters
(small <- letters)
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s"
## [20] "t" "u" "v" "w" "x" "y" "z"
(CAPS <- LETTERS)
## [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S"
## [20] "T" "U" "V" "W" "X" "Y" "Z"
sentence <- "The Quick Brown fox jumps Over the Lazy dog"
startval = 1
endval = nchar(sentence) # get the number of characters
# setup counters
count_CAP_vowels = 0
count_CAP_consonants = 0
count_small_vowels = 0
count_small_consonants = 0
Capitals = 0
smalls = 0
spaces = 0
CAPvowels <- c("A","E","I","O","U")
smallvowels <- c("a","e","i","o","u")
for (i in startval:endval){
# extract one letter at a time from the sentence
# "The Quick Brown fox jumps Over the Lazy dog"
dat <- substring(sentence,i,i) # for i=1, dat ="T"; for i=2, dat = "h" ...
# check first if a blank space or not was extracted
if (dat == " "){
spaces = spaces + 1
} else { # meaning it is not a blank space
# determine if small letter or capital letter
CAPtrue <- ifelse(dat %in% CAPS,TRUE,FALSE)
if (CAPtrue == TRUE){
# increase counter for occurence of capital letter
Capitals = Capitals + 1
# determine if vowel or not
CAPvowelsTF <- ifelse(dat %in% CAPvowels,TRUE,FALSE)
if (CAPvowelsTF == TRUE) {
count_CAP_vowels = count_CAP_vowels + 1
} else {
count_CAP_consonants = count_CAP_consonants + 1
}
} else { # meaning dat = small letter
smalls = smalls + 1
# determine if vowel or not
smallvowelsTF <- ifelse(dat %in% smallvowels,TRUE,FALSE)
if (smallvowelsTF == TRUE) {
count_small_vowels = count_small_vowels + 1
} else {
count_small_consonants = count_small_consonants + 1
}
}
}
}
# display counters
spaces
## [1] 8
count_small_vowels
## [1] 10
count_small_consonants
## [1] 20
count_CAP_vowels
## [1] 1
count_CAP_consonants
## [1] 4
sentence
## [1] "The Quick Brown fox jumps Over the Lazy dog"
# compare total counts
spaces + count_small_vowels +count_small_consonants +count_CAP_vowels
## [1] 39
+count_CAP_consonants
## [1] 4
nchar(sentence)
## [1] 43
# Example 13: How to compute the sum of a sequence of numbers
# what is the sum of the first 10000 integers?
# What is the sum of terms 1/2 + 1/4 + 1/8 + 1/16 + 1/32 +....
# what is the sum of terms 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + ...
# solution
# You have to declare a variable and then you have to accumulate the value of that variable
N = 10000
sum1 = 0
sum2 = 0
sum3 = 0
for (i in 1:N){
sum1 = sum1 + i # this will handle question number 1
sum2 = sum2 + (1/2)^i # this will handle question number 2
sum3 = sum3 + 1/i # this will handle question number 3
}
# show results
sum1
## [1] 50005000
sum2
## [1] 1
sum3
## [1] 9.787606
# Example 14: How to compute the sum of a sequence of numbers
# what is the sum of the first N integers?
# What is the sum of terms 1/2 + 1/4 + 1/8 + 1/16 + 1/32 +....
# what is the sum of terms 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + ...
# where N is a numeric array?
N <- c(10000, 20000, 30000, 40000, 50000, 60000, 70000, 80000, 90000, 100000)
# The solution of this problem cannot be solved anymore using a single loop
# That is why we have to elevate our logic using a double for loop
# We will go back to this problem later
# Example 15: Computation of the correlation coefficient between two variables
# Consider the following two numeric vectors. We would like to plot them together and also
# compute what it is the correlation coefficient
datax <-
c(0.9913345,1.0027839,0.9968691,1.0161024,1.0065136,1.0297600,0.9659482,1.0185862,
1.0097508,1.0202250,1.0238810,0.9801332,1.0099076,0.9817378,0.9963364,1.0219328,
1.0059981,0.9722559,0.9926882,1.0267477,0.9945208,1.0177237,0.9808133,1.0143415,
1.0074551,1.0002456,0.9937849,1.0453198,0.9826864,1.0082201)
datay <-
c(0.9964580,1.0181583,0.9895960,1.0176893,1.0009406,1.0226642,0.9558703,1.0111873,
1.0158226,1.0187873,
1.0230155,0.9670798,1.0056325,0.9734213,1.0020038,1.0126897,1.0032060,0.9783406,
0.9948068,1.0246172,
0.9939589,1.0168364,0.9806948,1.0168963,1.0137382,0.9938570,0.9844847,1.0487818,
0.9784052,1.0037628 )
plot(datax,datay)

# From the plot you can conclude that there is a positive upward
# linear relationship between the two vectors
# Positive linear rekationship since small values of X matches with small values of Y
# and large values of X matches with large values of Y
# load some graphic files
# you have to rename the path direction in your laptop
# Please see the formula for the correlation
# coefficient as found in the Word file
#we are going to solve for 7 quantities
# sumx = sum of all x values
# sumy = sum of all y values
# sumxy = sum of the product of x and y
# sumxsquare = sum of the square of each x value
# sumysquare = sum of the square of each y value
# squaresumx = square of the sum of x values
# squaresumy = square of the sum of y values
# the numerator
# the denominator
# and the finally the correlation coefficient r
# This is the single loop solution
# initialize the summation variables
sumx = 0
sumy = 0
sumxy = 0
sumxsquare = 0
sumysquare = 0
squaresumx = 0
squaresumy = 0
xlen = length(datax)
for (i in 1:xlen){
sumx <- sumx + datax[i]
sumy <- sumy + datay[i]
sumxy <- sumxy + datax[i]*datay[i]
sumxsquare <- sumxsquare + datax[i]*datax[i]
sumysquare <- sumysquare + datay[i]*datay[i]
}
# the next two should be outside of the loop
# sumx and sumy must be computed first
squaresumx <- sumx^2
squaresumy <- sumy^2
# solve the numerator
nume <- xlen * sumxy - sumx * sumy
# solve the denominator
num2a <- xlen * sumxsquare - squaresumx
num2b <- xlen * sumysquare - squaresumy
deno <- sqrt(num2a*num2b)
Pearsonr <- nume/deno
# Display values
sumx
## [1] 30.1146
sumy
## [1] 30.0634
sumxy
## [1] 30.18842
sumxsquare
## [1] 30.2394
sumysquare
## [1] 30.13869
squaresumx
## [1] 906.8893
squaresumy
## [1] 903.8082
# display numerator,denominator and Pearsons r
nume
## [1] 0.3051451
deno
## [1] 0.3211701
Pearsonr
## [1] 0.9501044
# the degree of relationship is defined as 100*r^2
(Degree_relnship <- 100*Pearsonr^2)
## [1] 90.26985