使用if&和for循环打印

时间:2014-06-16 20:59:34

标签: r loops if-statement for-loop

也许我在想这个问题但是我需要创建一个for循环& if语句在我的数据集中找到最高值。我们还必须编写一份打印声明,然后将其打印出来。那天。有93排&初始矩阵中有4列。第4列包含所需数据。这些日子在第1栏。

我根本不懂编程。到目前为止,这就是我得到的:

我使用数据创建了一个带有列的向量:

only.data <- c(data[,4])

这是我在for&amp; if声明:

for (counter in 1:93) {
  if (only.data >= data[,4])
    print (only.data)
}

如何使用此方法将其吐出最高值?它打印最大值93次,这不是我想要的。我是否需要创建only.data向量,还是可以使用原始矩阵?我还需要打印出最高值旁边的相应日期。

ps - 我知道我可以使用更快捷的max函数,但这不是作业。

1 个答案:

答案 0 :(得分:2)

好像你在作弊,因此我不会在这里发布一个完整的解决方案,但只能指出你正确的方向

  1. data[,4]已经是一个向量,没有任何理由在其上使用c()。也没有理由将其保存在新对象only.data中,尽管它可能会使您的循环更快,因为它不需要在每个循环中进行索引。
  2. 循环的想法是你将在其中使用索引(虽然你不必,但没有真正的理由不这样做)。因此,您在for()中指定索引。虽然您指定了一个索引(counter),但您还没有使用它,因此无论您做什么,您的循环都会打印only.data
  3. 你所做的if所做的就是检查每次迭代是否only.data >= only.data(这显然是不必要的)
  4. 计算循环中的最大值并不是一件明显的事情,因为您在每次迭代中比较单个值,因此您需要一些策略。例如,您可以创建一个虚拟变量,该变量将在每次迭代中与only.data[counter]进行比较,以检查它是否更大,然后在不是
  5. 的情况下进行替换。

    为了说明我的最后一点,请考虑一个玩具示例

    set.seed(1)
    only.data <- sample(10,10)
    only.data
    #[1]  3  4  5  7  2  8  9  6 10  1 
    

    你可以看到最大值在第9位,现在我们将这个向量的第一个值赋给一个虚拟变量,并尝试使用for循环来找到最大值

    dummy <- only.data[1]
    dummy
    ## [1] 3
    
    for (counter in only.data) {
      if (counter > dummy) dummy <- counter
    }
    
    dummy
    ## [1] 10