R语言上课代码记录5

# 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'}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值