[英]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.