R使用seq_along跳过for循环中的最后一个元素

时间:2018-03-24 00:18:45

标签: r for-loop sequence

我有以下代码:

for(j in seq_along(nums)){
      d = dist(nums[j], average)
      print("nums[j]")
      print(nums[j])
      print("dist:")
      print(d)
      if(farthest < d){
        print("farthest = true")
        farthest <- nums[j]
      }
    }
    print("farthest")
    print(farthest)

其中dist(x,y)返回abs(x-y),nums如下:

nums <- c(224, 352, 320, 352, 352, 352, 223)

当我运行它时,它使224最远。程序正在计算223的距离。它给出了一个大于224的距离的数字,但是它从未指定223到最远。我不确定为什么会这样......

1 个答案:

答案 0 :(得分:1)

您正在比较两种不同类型的值。 farthest是来自nums的数字,但d是距离。你想改用它,

nums <- c(224, 352, 320, 352, 352, 352, 223)
average <- mean(nums)
farthest <- average
for(j in seq_along(nums)){
  d = abs(nums[j]-average)
  if(abs(farthest-average) < d){
    print("farthest = true")
    farthest <- nums[j]
  }
}
farthest

我希望这有帮助!

编辑:

实际上,你应该使用这样的东西,

max.ind <- which.max(abs(nums - average))
nums[max.ind]