Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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 如何在我的代码中停止if循环的计数过程?_R_If Statement_Conditional Statements - Fatal编程技术网

R 如何在我的代码中停止if循环的计数过程?

R 如何在我的代码中停止if循环的计数过程?,r,if-statement,conditional-statements,R,If Statement,Conditional Statements,在for循环中的每个I第一次满足y0(while循环中规定的条件) 我曾尝试做一些的事情,如果(y0&z>2,这对我来说是有意义的,但结果没有意义,因为在我运行代码之后,count\ux大约是100(有意义)但是count_y大于1000,这是没有意义的,因为for loop仅来自1:1000 count_x <- 0 count_y <- 0 for (i in 1:1000){ x <- 25 y <- 25 t <- 0 while ((x

for循环
中的每个
I
第一次满足
y<0
条件后,我想停止
y
的计数过程。这意味着,
x
的计数过程将继续,只要
x>0
(while循环中规定的条件)

我曾尝试做一些
的事情,如果(y<0&(y-120*(16/81)*time+(z-2))>0&z>2
,这对我来说是有意义的,但结果没有意义,因为在我运行代码之后,
count\ux
大约是100(有意义)但是
count_y
大于1000,这是没有意义的,因为
for loop
仅来自
1:1000

count_x <- 0
count_y <- 0

for (i in 1:1000){
  x <- 25
  y <- 25
  t <- 0
  while ((x > 0 | y > 0) & t < 100){
    time <- rexp(1,100)
    u <- runif(1,0,1)
    z <- 4/((1-u)^0.2) - 4
    if (z < 2){
      x <- x + 110*(65/81)*time - z
    } else {
      y <- y + 120*(16/81)*time - (z-2)
      x <- x + 110*(65/81)*time - 2
    }
    t <- t + time
    if (x < 0){
      count_x <- count_x + 1
    }
    if (y < 0 & (y - 120*(16/81)*time + (z-2)) > 0 & z > 2){
      count_y <- count_y + 1
    }    
  }
}

count\u x我认为代码没有任何问题。至少在我看来,y计数器似乎是正确的。y变大的原因有两个。首先,即使外部
for
循环只有1000,但内部
while
循环在每次迭代中可能运行100次以上。其次,似乎y比x先降到0以下,因此x计数器更小

我修改了您的代码,添加了一个计数器,用于计算迭代次数,以及两个变量,分别存储
x
y
的值,第一次
y
低于零时


count\ux我们将为x和y创建变量,当它们在每次迭代中都过零时,这些变量将被存储和跟踪。首先,我们将检查x或y是否为零,以及
neg
是否属于
NULL
类。如果是,那么这是第一个负数。我们将
x_0
y_0
存储为1。然后在计数时,我们检查
x_0
y_0
是否等于1,以及
neg
是否为
NULL
。然后我们将添加到计数器并记录第一个负片。此后,条件的计算结果为
FALSE


count\x编辑了这个问题,忘了附上我的代码。很难理解为什么要使用for循环,因为在你的循环中没有使用i。for循环用于签入1000次,
x
y
将是多少次
你是说y在i迭代的while循环中第一次过零时就应该被计数,之后就不应该被计数了吗?是的,这就是我的意思。但当第二次迭代开始时,它将再次开始计数。同样的事情也发生在
x
上你好,洛弗先生,谢谢你的解决方案!谢谢!然而,我想我不太清楚我想在我的问题,所以我已经编辑了我的问题再次添加的例子,希望能得到一些建议从你再次!谢谢