在abline()r中的ifelse

时间:2017-01-08 06:42:34

标签: r function plot

我想知道如何在 R代码中获取 abline()命令以绘制 2垂直 线条 IF tl == 2 且仅 1条垂直线 IF tl == 1 具有相同的线条颜色(例如& #34;绿色"?)

这是我的 R代码(没有成功):

CBT <- function(g,r,n,tl){

curve(dt(x,n),-5,6,col="red")

abline(v=ifelse(tl==2,c(-2,2),2),col="green") ## HERE needs a fix??
}

## Test this:
CBT(.4,.05,20,2)

2 个答案:

答案 0 :(得分:2)

我们可以使用if/else条件

CBT <- function(g,r,n,tl){
curve(dt(x,n),-5,6,col="red")
if(tl==2){
   abline(v=c(-2,2), col="green")
  } else {
  abline(v = 2, col="green") }
}

CBT(.4,.05,20,2)

如果我们需要条件,即1,2和其他情况的'tl'

CBT <- function(g,r,n,tl){
 curve(dt(x,n),-5,6,col="red")
 if(tl==2){
  abline(v=c(-2,2), col="green")
  } else if(tl==1){
   abline(v = 2, col="green") 
 } else {abline(v=NA)}
}

CBT(.4,.05,20,2)
CBT(.4,.05,20,1)
CBT(.4,.05,20,0)

答案 1 :(得分:2)

您可以使用ifelse调用将索引返回到具有适合您的两个条件的值的列表中。

CBT <- function(g,r,n,tl){
        curve(dt(x,n),-5,6,col="red")
        abline(v= list( c(-2,2), 2) [[ ifelse(tl==2, 1, 2)]], col="green") 
  }
CBT(.4,.05,20,1.5)

我认为尝试以ifelse方式使用的问题是ifelse旨在返回与条件具有相同长度的值。使用索引可以改变长度。