Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在上一次运行R函数的绘图顶部绘制线段_R_Function_For Loop_Plot_Vectorization - Fatal编程技术网

在上一次运行R函数的绘图顶部绘制线段

在上一次运行R函数的绘图顶部绘制线段,r,function,for-loop,plot,vectorization,R,Function,For Loop,Plot,Vectorization,我有一个名为stock(以下)的R函数。我想知道是否有可能将每次函数运行的结果(即plot())绘制(即添加)在上一次函数运行的绘图之上?(代码下面的图片可能会显示这一点) 最简单的方法是为选项添加一个参数。由于默认情况下,segments()会添加到上一帧中,因此您只需不执行新的plot() 最简单的方法是为选项添加一个参数。由于默认情况下,segments()会添加到上一帧中,因此您只需不执行新的plot() 实际上,第一次和第二次跑步的曲线图会相互重叠。你会把它们看作一行,而不是两行。是的

我有一个名为
stock
(以下)的
R
函数。我想知道是否有可能将每次函数运行的结果(即
plot()
)绘制(即添加)在上一次函数运行的绘图之上?(代码下面的图片可能会显示这一点)


最简单的方法是为选项添加一个参数。由于默认情况下,
segments()
会添加到上一帧中,因此您只需不执行新的
plot()


最简单的方法是为选项添加一个参数。由于默认情况下,
segments()
会添加到上一帧中,因此您只需不执行新的
plot()


实际上,第一次和第二次跑步的曲线图会相互重叠。你会把它们看作一行,而不是两行。是的,我明白。但第二个图的y值不高于第一个图。把它们都画出来,你会发现如果一起画在一个图上,它看起来就像一条线,而不是一条线在另一条线上。你想任意向上移动第二个吗?实际上,第一次和第二次跑步的曲线图会相互重叠。你会把它们看作一行,而不是两行。是的,我明白。但第二个图的y值不高于第一个图。把它们都画出来,你会发现如果一起画在一个图上,它看起来就像一条线,而不是一条线在另一条线上。你想随意把第二个向上移动吗?
stock = function(m, s){

 loop = length(s) 

 I = matrix(NA, loop, 2)

for(i in 1:loop){
I[i,] = quantile(rbeta(1e2, m, s[i]), c(.025, .975))
 }
plot(rep(1:loop, 2), I[, 1:2], ty = "n", ylim = 0:1, xlim = c(1, loop))

segments(1:loop, I[, 1], 1:loop, I[, 2])
}
# Example of use:
stock(m = 2, s = c(1, 10, 15, 20, 25, 30))
stock(m = 50, s = c(1, 10, 15, 20, 25, 30)) #The result of this run be plotted on top of previous run above
stock = function(m, s, add=FALSE) {

    loop = length(s) 
    I = matrix(NA, loop, 2)

    for(i in 1:loop) {
        I[i,] = quantile(rbeta(1e2, m, s[i]), c(.025, .975))
    }
    if (!add) {
        plot(rep(1:loop, 2), I[, 1:2], ty = "n", ylim = 0:1, xlim = c(1, loop))
    }
    segments(1:loop, I[, 1], 1:loop, I[, 2], xpd = NA)
}

# Example of use:
set.seed(1)
stock(m = 2, s = c(1, 10, 15, 20, 25, 30))
stock(m = 50, s = seq(1, 90, 10), add=TRUE)