我在寻求你的帮助。我正在努力解决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 2
和xi_xj[4,1]
"略有不同"数量为xi_xj[4,3]
,这很奇怪。我怀疑这是由于R auto用来处理我的数据的数据类型,在这种情况下它是" double"。我不知道如何解决这个问题。
这是我的代码:
1.110223e-16
答案 0 :(得分:0)
我发现了这个问题Setting 'float' as storage mode of a single precision object。事实证明,R不支持单精度。因此,所有值都存储为“double”,这会在我的代码中导致奇怪的排序排列。