这些在 while 循环中使用逻辑运算符的表达式是什么意思?

What do these expressions using logical operators inside while-loop mean?

我正在尝试理解 R while 循环中的一段代码,如果有人能帮助我,我将不胜感激。我在许多在线论坛(和 google 搜索)中阅读了 R 逻辑运算符的解释,但无法理解以下代码。

假设:

c=1

while(c<=4){

  c1=c-(c>2)*2    
  c2=1*(c<3)+2*(c>2)        

  AB=A[[c1]] * ((1-x)+x*B[[c2]])               
  c=c+1
}

我只想了解以下内容。

c1=c-(c>2)*2     

c2=1*(c<3)+2*(c>2)

我以前从未见过这种逻辑运算符的组合,如果有人能稍微解释一下,我将不胜感激。非常感谢。

理解特定代码行或函数的作用的另一个通常明智的步骤是将其绘制成图表;由于您的 while 循环只是在每一步递增 c,然后根据这些 c 值计算 c1c2,我们可以编写两个函数

func_c1 <- function(c) c - (c > 2) * 2
func_c2 <- function(c) 1 * (c < 3) + 2 * (c > 2)

即 return c1c2 分别为不同的值 c.

然后我们可以绘制 c1c2 不同的值 c;您的 while 循环考虑 c = 1:4:

data.frame(c = 1:4, c1 = func_c1(1:4), c2 = func_c2(1:4)) %>%
    gather(param, val, -c) %>%
    ggplot(aes(c, val, colour = param)) +
    geom_point() +
    geom_line()