美文网首页
条件和循环语句

条件和循环语句

作者: 萍智医信 | 来源:发表于2022-02-01 18:39 被阅读0次

    一.条件语句

    1.if(){ } else{ }

    (1)只有if没有else,那么条件是FALSE时就什么都不做

    i = -1
    if (i<0) print('up')
    if (i>0) print('up')
    
    #理解下面代码
    if(!require(tidyr)) install.packages('tidyr')
    

    (2)有else

    i =1
    if (i>0){
      cat('+')
    } else {
      print("-")
    }
    

    2.ifelse函数可处理向量

    #单个数值
    i=-1
    ifelse(i>0,"+","-")
    
    #向量
    x=rnorm(10)
    x
    y=ifelse(x>0,"+","-")
    y
    
    #多个条件
    i = 0
    if (i>0){
      print('+')
    } else if (i==0) {
      print('0')
    } else if (i< 0){
      print('-')
    }
    
    i
    ifelse(i>0,"+",ifelse((i<0),"-","0"))
    

    二.循环语句

    1.for循环函数

    x可以是向量,数据框,列表等。x的长度为几,循环就会进行多少次。

    #**顺便看一下next和break**
    x <- c(5,6,0,3)
    s=0
    for (i in x){
      s=s+i
      #if(i == 0) next 如果i=0,则直接跳过当前(0),到下一个循环(3)
      #if (i == 0) break 如果i=0,则中断循环
      print(c(which(x==i),i,1/i,s))
    }
    


    #优化代码-推荐
    x <- c(5,6,0,3)
    s = 0
    for (i in 1:length(x)){
      s=s+x[[i]]  #x向量取子集,建议用两个[],避免出现奇怪报错
      #if(i == 3) next
      #if (i == 3) break
      print(c(i,x[[i]],1/x[[i]],s))
    }
    
    #如何将结果存下来?
    x
    s = 0
    result = list()
    for(i in 1:length(x)){
      s=s+x[[i]]
      result[[i]] = c(i,x[[i]],1/x[[i]],s)
    }
    result
    
    #将列表变成矩阵,将列表里每个子集进行连接
    do.call(cbind,result)
    

    -----------------------------练习---------------------------------

    #1.使用循环,查看"a",TRUE和3的数据类型
    x = list("a",TRUE,3)
    for(i in 1:length(x)){
      print(class(x[[i]]))
    }
    
    #1.使用循环,对iris的1到4列分别画点图(plot)
    opar<-par(no.readonly = TRUE)
    par(mfrow = c(2,2))
    for(i in 1:4){
      plot(iris[,i],col = iris[,5])
    }
    par(opar)
    

    ①if函数

    ②else if函数

    ③for函数

    ④while函数

    ⑤repeat函数

    参考资料:生信技能树-小洁老师

    相关文章

      网友评论

          本文标题:条件和循环语句

          本文链接:https://www.haomeiwen.com/subject/nspkkrtx.html