我想知道如何在 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)
答案 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旨在返回与条件具有相同长度的值。使用索引可以改变长度。