如何使用for循环找到R向量中的max,而不使用max()?
这是我的解决方案:
a=c(-9,20,40,1,5,0)
y=-Inf
z=0
for (i in a) {
x=i
if(x>y){y=i}
else{y=Inf}
if(y!=-Inf & z<y){z=i}
}
print(paste0("maximum number is:" , z))
有更简单的方法吗?
答案 0 :(得分:1)
首先编写新版本而不使用x
变量(直接使用i
)
将变量重命名为有意义的事物! 当您开始编写代码时,请使用长名称变量。
请勿将其称为i
,x
,y
等......
称呼他们current_value
,maximum_value_seen
,current_index
,...
您编写的第二个if()
仅在第一个if()
为TRUE
所以你可以从这里重写你的代码:
# if1
if(x>y){y=i}
else{y=Inf}
# if2
if(y!=Inf){z=i}
到此
# if1
if(x>y){
y=i
# if2
if(y!=Inf){z=i}
}
else{y=Inf}
第二个if(#if2
)现在没用了!
删除它
y
变量也没用,您现在可以删除它。
享受您的辛勤工作,使用新的 4-5行最大功能,然后去喝啤酒(毕竟你是学生!)