我有一个文件包含我的分析的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"))).
答案 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"}
}
我希望这有一些帮助,我也只是一个初学者。