我怎样在Lua中从数组的每个元素中减去一个值?

我正在尝试编写一个函数来查找数据集的方差。

我遇到了一个小问题。我有一个数组,我想找出数组中每个元素与平均值的差距。以下是我编写的简化版本:

>y={1,2,3}
>y_average=2
>y_diff={}

>for key, value in pairs(y) do y_diff[key]=(y[key]-y_average)
>>return unpack(y_diff)
>>end

-1

我想得到的是: -1、0、1

为什么它只给我第一个值,而不是所有三个值?

点赞
用户1055725
用户1055725

你的返回值在第一次迭代中打破了循环,正如评论中所提到的。试试这个:

for i in ipairs(y) do
    y_diff[i] = y[i] - y_average
end
print( table.concat(y_diff, '\t') )

table.concat 没有限制它能处理的元素数量,如果你想比逐个写入更快地将这些元素放入文件中,它会是你的选择。

2015-06-23 09:19:35