前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >专题3 条件和循环

专题3 条件和循环

原创
作者头像
用户11064093
发布2024-04-18 13:42:47
780
发布2024-04-18 13:42:47

条件和循环

一.条件语句

###1.if(){ }如果(逻辑值,不是逻辑值向量)就{}

(1)只有if没有else,那么条件是FALSE时就什么都不做 可以用于管理代码块
代码语言:r
复制
i = -1
if (i<0) print('up')
代码语言:2
复制
## [1] "up"
代码语言:r
复制
if (i>0) print('up')

#理解下面代码
if(!require(tidyr)) install.packages('tidyr')
(2)有else
代码语言:r
复制
i =1
if (i>0){
  print('+')
} else {
  print("-")
}
代码语言:r
复制
## [1] "+"
重点:ifelse
代码语言:r
复制
i = 1
ifelse(i>0,"+","-")
代码语言:r
复制
## [1] "+"
代码语言:r
复制
x = rnorm(3) # 可以是逻辑值或逻辑值向量
x
代码语言:r
复制
## [1] -0.7623049  0.9558385  2.0604772
代码语言:r
复制
ifelse(x>0,"+","-")
代码语言:r
复制
## [1] "-" "+" "+"
ifelse()+str_detect(),王炸
代码语言:r
复制
library(stringr)

samples = c("tumor1","tumor2","tumor3","normal1","normal2","normal3")
k1 = str_detect(samples,"tumor");k1
代码语言:r
复制
## [1]  TRUE  TRUE  TRUE FALSE FALSE FALSE
代码语言:r
复制
ifelse(k1,"tumor","normal")
代码语言:r
复制
## [1] "tumor"  "tumor"  "tumor"  "normal" "normal" "normal"
代码语言:r
复制
k2 = str_detect(samples,"normal");k2
代码语言:r
复制
## [1] FALSE FALSE FALSE  TRUE  TRUE  TRUE
代码语言:r
复制
ifelse(k2,"normal","tumor")
代码语言:r
复制
## [1] "tumor"  "tumor"  "tumor"  "normal" "normal" "normal"
(3)多个条件
代码语言:r
复制
i = 0
if (i>0){
  print('+')
} else if (i==0) {
  print('0')
} else if (i< 0){
  print('-')
}
代码语言:r
复制
## [1] "0"
代码语言:r
复制
ifelse(i>0,"+",ifelse(i<0,"-","0"))
代码语言:r
复制
## [1] "0"

二、for循环

代码语言:r
复制
for( i in 1:4){
  print(i)
}
代码语言:r
复制
## [1] 1
## [1] 2
## [1] 3
## [1] 4

批量画图

代码语言:r
复制
par(mfrow = c(2,2))
for(i in 1:4){
  plot(iris[,i],col = iris[,5])
}

批量装包

代码语言:r
复制
pks = c("tidyr","dplyr","stringr")
for(g in pks){
  if(!require(g,character.only = T))
    install.packages(g,ask = F,update = F)
}
dplyr包中case_when简化ifelse
代码语言:r
复制
library(dplyr)
# case_when() # 可用于将数据转换为分类因子

df <- data.frame(player = c('AJ', 'Bob', 'Chad', 'Dan', 'Eric', 'Frank'),
                 position = c('G', 'F', 'F', 'G', 'C', NA),
                 points = c(12, 15, 19, 22, 32, NA),
                 assists = c(5, 7, 7, 12, 11, NA))
df
代码语言:r
复制
##   player position points assists
## 1     AJ        G     12       5
## 2    Bob        F     15       7
## 3   Chad        F     19       7
## 4    Dan        G     22      12
## 5   Eric        C     32      11
## 6  Frank     <NA>     NA      NA
代码语言:r
复制
df %>%
  mutate(quality = case_when(points > 20 ~ 'high',
                             points > 15 ~ 'med',
                             TRUE ~ 'low' ))
代码语言:r
复制
##   player position points assists quality
## 1     AJ        G     12       5     low
## 2    Bob        F     15       7     low
## 3   Chad        F     19       7     med
## 4    Dan        G     22      12    high
## 5   Eric        C     32      11    high
## 6  Frank     <NA>     NA      NA     low

引用自生信技能树

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 条件和循环
    • 一.条件语句
      • (1)只有if没有else,那么条件是FALSE时就什么都不做 可以用于管理代码块
      • (2)有else
      • 重点:ifelse
      • ifelse()+str_detect(),王炸
      • (3)多个条件
  • 二、for循环
    • 批量画图
      • 批量装包
        • dplyr包中case_when简化ifelse
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档