【发布时间】:2019-03-04 01:52:25
【问题描述】:
我正在尝试理解 R while 循环中的一段代码,如果有人可以帮助我,我将不胜感激。我在许多在线论坛(和谷歌搜索)中阅读了 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)
我以前从未见过这种逻辑运算符的组合,如果有人能解释一下,我将不胜感激。非常感谢。
【问题讨论】:
-
请使用“代码格式化”;它使问题更具可读性。
-
c1=c-(c>2)*2for instance 与数学中的含义相同。 -
c > 2将产生一个逻辑,当逻辑与像*这样的算术运算符结合使用时,它将被转换为适当的数字类型,所以实际上你得到了 @987654326 @ 或0 * 2在第一行 -
首先,除了您自己之外,任何人都无法重现您的代码(例如,
A和B未在任何地方定义)。更一般地说:您是否尝试过逐步运行代码?您应该添加print语句以查看每个变量在while循环的每一步都在做什么。 -
另外,
c=1; while(c<=4) { ...; c=c+1 }只是表达for (c in 1:4) { ... }的一种严重混淆的方式
标签: r while-loop logical-operators