R语言--18

if...else语句的两种写法

法一

if(条件1){
    表达式1
  } else if(条件2){
    表达式2
  } else {
    表达式3
  }

法二:


ifelse()函数方法.png

注意写条件语句时,条件中的元素仍然只为一个。如果输入的变量中有多个元素时,如向量,则R会处理第一个元素。

x = c(6:-4)
In if (x < 10) { : 条件的长度大于一,因此只能用其第一元素

总之,个人认为条件语句的用法与py中无区别。

而对于ifelse()函数,返回的是与输入的test中的变量(可以是单个元素,也可以是向量)相同形状的值。值的确定由test的条件判断确定。总之,理解这个函数仔细阅读上图的函数说明。

应用一:负数开平方会产生NAN值——解决方式:将负数值提前替换成NA

> x = c(6:-4)
> sqrt(ifelse(x>=0,x,NA))
 [1] 2.449490 2.236068 2.000000 1.732051 1.414214 1.000000 0.000000       NA       NA
[10]       NA       NA

应用二:ifelse()函数嵌套--将向量size中size <=0.2的替换成为Small,0.2< size <=0.8 Medium size >0.8 Large

> size <- c(0.05, 0.6, 0.3, 0.9)
#法一:
> for(i in x){
+   if(i <= 0.2){
+     cat("Small\n")
+   } else if(i <= 0.8){
+     cat("Medium\n")
+   } else {
+     cat("Large\n")
+   }
+ }
Small
Medium
Medium
Large
#法二:
>ifelse(size<=0.2,"Small",ifelse(size<=0.8,"Medium","Large"))
[1] "Small"  "Medium" "Medium" "Large" 

应用三:绘图函数plot中,有时需要给不同的元素附上颜色,可以用ifelse()

> a
      height weight gender
tom      180     75   male
cindy    165     58 female
jimmy    175     72   male
sam      173     68   male
lucy     160     60 female
lily     165     55 female
> color=ifelse(a$gender=="male","blue","red")
> color
[1] "blue" "red"  "blue" "blue" "red"  "red" 
> plot(a$height,col=color)#col参数需要传入一个向量

for/while循环:

用for循环和while循环打印如下信息:
[1] 1
[1] 1 2
[1] 1 2 3
[1] 1 2 3 4
[1] 1 2 3 4 5

#for循环
for (i in 1:5) print (1:i)
#while循环
i=1
while(i<=5){
  print(1:i)
  i=i+1
}

for循环应用

genelist=c("TP53","EGFR","TGFB","MSH2","PTEN")
for(gene in genelist){
  filename=paste(gene,".pdf",sep="")
  cat(filename,"\n")
}

你可能感兴趣的:(R语言--18)