使用for循环查找R向量中的最大值,而不使用max()

时间:2016-01-25 17:44:58

标签: r

如何使用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))

有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

OP问题是“这可以用更简单的方式完成”,而不是“为我做”,所以答案是肯定的,是的,它可以用更简单的方式完成,而不会带来乐趣:)

第1步

首先编写新版本而不使用x变量(直接使用i

第2步

将变量重命名为有意义的事物! 当您开始编写代码时,请使用长名称变量。

请勿将其称为ixy等......

称呼他们current_valuemaximum_value_seencurrent_index,...

第3步

您编写的第二个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}

第4步

第二个if(#if2)现在没用了! 删除它

第5步

y变量也没用,您现在可以删除它。

第6步

享受您的辛勤工作,使用新的 4-5行最大功能,然后去喝啤酒(毕竟你是学生!)