2016-01-25 35 views
-1

如何在不使用max()的情况下使用for循环找到R向量中的最大值?在不使用max()的情况下使用for循环找到R向量中的最大值()

这里是我的解决方案:

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

为什么没有'MAX() '?有什么具体的,你试图实现?甚至没有'which.max()'? –

+0

嗯,它的一个任务,具体说不使用任何函数,直接找到最大值。 –

+2

我刚刚删除了我的回复。你不应该发布任务问题。您将错过学习体验的好处。尝试思考你目前正在做什么,看看你是否可以自己想出一个更简单的解决方案。 – JPC

回答

1

OP的问题是“这可以做一个更简单的方式”,而不是“为我做”,所以答案是肯定的,它可以以一种更简单的方式完成,而没有形成乐趣:)

步骤1

开始通过写一个新的版本,而不使用x变量(使用i直接)

步骤2

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

不要叫他们ixy,等...

称他们为current_valuemaximum_value_seencurrent_index,...

步骤3

,你写的第二if(),仅在第一个if()TRUE

时执行所以你可以r从这个ewrite代码:

# 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线最大功能并抢啤酒(你毕竟是学生!)

+0

非常感谢提示。我发现第二个如果可以被集成到第一个,那么它将不会每次都运行。我很久以前才开始介绍CS,现在又回来了BioStatistics。 –

+0

啊,我的坏,应该是:else {y = -Inf} –

+0

你确定吗?重命名你的变量来停止在头脑中混合'x','y'等,并保持当前的最大值 – Eloims

相关问题