# loop
# For loop
# for (variable in sequence){statement}
# example 1
for(i in c(1:10)) {
print(i)
}
# example 2
A <- letters
for (i in c(1:10)){
cat(A[i],'\n')
}
# example 3
n <- 10
for (i in c(n:1)){
cat(rep('*',i), '\n')
}
# example 4
n <- 5
for (i in c(1:n)){
cat(rep('',n-i+5),rep("*",2*i-1),'\n')
}
# while loop
# while(test_expression){statement}
# if test is TRUE do statement until the test is FALSE
# Example 1
i <- 1
while (i <= 5){
print(i)
i <- i+1
}
i <- 1
while (i <= 5){
cat('The current value',i,'\n')
i <- i+1
}
# Example 2
iteration <- 1
price <- 50
while (price >= 40){
fluctuation <- sample(c(-10:10),1)
price <- price + fluctuation
cat("iteration",iteration,":current stock price is", price, '\n')
iteration <- iteration + 1
}
# Most time, for and while loop can be replaced with each other
# while(condition is TRUE){statement}
# it is equivalent to
# for (i in c(1:10000000)){
# statement
# if(condition is FALSE){break}
# }
# For loop version of while() Example 2
price <- 50
for (i in c(1:10000000)){
fluctuation <- sample(c(-10:10),1)
price <- price + fluctuation
cat("iteration",i,":current stock price is", price, '\n')
if(price < 40){break}
}
# for() loop and which()
id <- c(1:34)
group <- sample(c('A','B','C'), 34, replace=TRUE)
table(group)
score <- sample(c(40:100), 34, replace=TRUE)
mydata <- data.frame(id, group, score)
# use which() to subset data subset子集
# for example, we select only B group students using which()
mydata_B <- mydata[which(mydata$group == 'B'), ]
# use which() to generate a new variable: letter grade
mydata$letter <- NA
mydata$letter[which(mydata$score>=90)] <- 'A'
mydata$letter[which(mydata$score>=80 & mydata$score <90)] <- 'B'
mydata$letter[which(mydata$score>=70 & mydata$score <80)] <- 'C'
mydata$letter[which(mydata$score>=60 & mydata$score <70)] <- 'D'
mydata$letter[which(mydata$score<60)] <- 'F'
# use for() loop to do the same thing
mydata2 <- data.frame(id, group, score)
mydata2$letter <- NA
for (i in 1:nrow(mydata2)){ # nrow() gives you the number of rows
if (mydata2$score[i]>90){mydata2$letter[i] <- 'A'}
else if (mydata2$score[i]>=80 & mydata2$score[i]<90){mydata2$letter[i] <- 'B'}
else if (mydata2$score[i]>=70 & mydata2$score[i]<80){mydata2$letter[i] <- 'C'}
else if (mydata2$score[i]>=60 & mydata2$score[i]<70){mydata2$letter[i] <- 'D'}
else if (mydata2$score[i]<60){mydata2$letter[i] <- 'F'}
}
R语言上课代码记录5
最新推荐文章于 2024-10-01 19:19:37 发布