R返回奇怪的顺序排列

时间:2016-07-19 13:10:32

标签: r

我在寻求你的帮助。我正在努力解决R存储和处理数据值的方式。这是我的例子:

我有一个矩阵4x3。在每一行中,我计算每对中的绝对差异(我的代码中的第2步):

xi_xj[i,1]  = abs(x[i, 1]-x[i, 2]) # the different btw the 1st and 2nd elements

xi_xj[i,2]  = abs(x[i, 1]-x[i, 3]) # the different btw the 1st and 3rd elements

xi_xj[i,3]  = abs(x[i, 2]-x[i, 3]) # the different btw the 2nd and 3rd elements

一旦计算出xi_xj,我将按递增顺序在每一行上订购3个元素并返回索引或置换(我的代码中的第3步)。我使用函数order()来执行此操作。但是,对于包含xi_xj的{​​{1}}的第4行,我得到了奇怪的返回排列。我希望返回排列应该是(0.3, 0.6,0.3),这意味着"第一个元素{1, 3, 2}首先出现,然后是第三个元素(0.3也是如此),第二个元素是最后一个(0.6)&# 34 ;.当代码运行时,它返回奇怪的命令{3,1,2}。我在这里很困惑。我在代码中添加了(0.3)#test1,我清楚地看到#test 2xi_xj[4,1]"略有不同"数量为xi_xj[4,3],这很奇怪。我怀疑这是由于R auto用来处理我的数据的数据类型,在这种情况下它是" double"。我不知道如何解决这个问题。

这是我的代码:

1.110223e-16

1 个答案:

答案 0 :(得分:0)

我发现了这个问题Setting 'float' as storage mode of a single precision object。事实证明,R不支持单精度。因此,所有值都存储为“double”,这会在我的代码中导致奇怪的排序排列。