繁体   English   中英

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

[英]R skipping last element in for loop using seq_along

我有以下代码:

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(xy),nums如下:

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

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

您正在比较两种不同类型的值。 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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM