我有以下代码:
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到最远。我不确定为什么会这样......
答案 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]