R中的if-else语句

时间:2016-09-25 02:12:01

标签: r

我有一个文件包含我的分析的p值。我想使用if else语句来执行以下操作:

如果p值小于0.01则给出绿色。如果p值大于0.01且小于0.05则产生红色。如果p值大于0.05会产生黄色。

我尝试使用以下代码但不起作用:

col=ifelse(data < 0.01,"green" , 
           ifelse(data > 0.01 & data < 0.05, "red"), 
                  ifelse(data>0.05, "yellow"))).

2 个答案:

答案 0 :(得分:3)

在这种情况下,ifelse解决问题的方法很糟糕。听起来你正试图获取一组连续值(p值)并为它们生成离散标签。 R的基础cut功能正是为此目的而设计的。假设我们有:

example.data <- data.frame(p = c(0.0001, 0.001, 0.01, 0.025, 0.5))

       p
1 0.0001
2 0.0010
3 0.0100
4 0.0250
5 0.5000

我们只需使用cut生成您想要的标签:

example.data$color <- cut(example.data$p, breaks = c(0, 0.01, 0.05, 1), labels = c('green', 'red', 'yellow'))

       p  color
1 0.0001  green
2 0.0010  green
3 0.0100  green
4 0.0250    red
5 0.5000 yellow

答案 1 :(得分:-1)

col=ifelse(data < 0.01,"green" , 
           ifelse(data > 0.01 && data < 0.05, "red"), 
                  ifelse(data>0.05, "yellow"))).

/ **这里有一些东西只是基础知识:你可以更容易地创建一个方法(不需要是我设置的名称)来完成工作。

 you should use the else's and if's as following:

 if(condition){command}
 else if (another condition){command} 
 else{command that runs if no conditions are triggered}


 notice that you can use as many else if() as needed as long as you finish using else and only else */


public void changeColor(){
if(data<0.01)
col = "green"
else if(data>0.01 && data <0.05)
col= "red"
else{col="yellow"}

}

我希望这有一些帮助,我也只是一个初学者。