我正在尝试理解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)
我以前从未见过这种逻辑运算符的组合,如果有人可以解释一下,将不胜感激。非常感谢。
答案 0 :(得分:1)
理解特定代码行或函数的作用的另一个通常明智的步骤是对其进行绘图;由于您的while
循环仅在每个步骤中递增c
,然后根据这些c1
值计算c2
和c
,因此我们可以编写两个函数
func_c1 <- function(c) c - (c > 2) * 2
func_c2 <- function(c) 1 * (c < 3) + 2 * (c > 2)
分别针对不同的值c1
返回c2
和c
。
然后我们可以针对不同的值c1
绘制c2
和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()