解释复杂的嵌套循环

时间:2017-06-19 20:20:23

标签: r for-loop nested

你如何插入这个嵌套for循环的“else”部分?

我已经把我的尝试放在了最底层,但我正在努力探讨其他部分如何运作,因为已经定义了a。 y(1,2,3,4)的结果是16,因此通过我的计算,在该步骤中向量增加值为6,因为其他步骤不成立。

y=function(a,b,c,d)
{
if(a>b){
 while(b<d){
  b=b+a
}
for(e in c(a,c,d)){
b=b-e
}}
else{
for(a in 1:c){
  a=a+d
}}
if(b>c){
c= c*d + a-b}
 return(sum(a,b,c,d))
}

y(1,2,3,4)

我的解释:

仅在&gt;时有效b(如果不是:跳到“其他步骤”) 继续添加a到b,只要它不超过b(在它之前停止最后一步) 在c中说e(a = 1,b = 2,c = 3),我们会做(b - a - c - d)或技术上b-1,然后是(b-1)-2,然后是(b-3) )-3 b =是

仅当&lt; b它适用 - 这是我不理解的部分????

第一个if / else循环之后的下一步:只需从第一个循环后的a,b,d,c的最新值重新计算c 求和最终向量的所有元素

1 个答案:

答案 0 :(得分:1)

当您拨打y(1,2,3,4)

时,这就是正在发生的事情
# First check if a > b
# a = 1, b = 2 do nothing
#
# else if a < b then run for loop
# for(a in 1:c) 
#   first run through
#     a = 1
#     a = 1 + 4
#     a = 5
#   second run through
#     a = 2 (Note a has been overwritten as to by for loop iteration)
#     a = 2 + 4
#     a = 6
#   third and final run through
#     a = 3 (Note a has again been overwritten by for loop iteration)
#     a = 3 + 4
#     a = 7
#
# After for loop completes check if b > c
# b = 2, c = 3 do nothing
#
# return statement
# sum all values
# a = 7, b = 2, c = 3, d = 4
# 7 + 2 + 3 + 4 = 16
# return 16