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

时间:2019-03-04 01:52:25

标签: r while-loop logical-operators

我正在尝试理解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)

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

1 个答案:

答案 0 :(得分:1)

理解特定代码行或函数的作用的另一个通常明智的步骤是对其进行绘图;由于您的while循环仅在每个步骤中递增c,然后根据这些c1值计算c2c,因此我们可以编写两个函数

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

分别针对不同的值c1返回c2c

然后我们可以针对不同的值c1绘制c2c;您的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()

enter image description here