Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何重新计算矩阵以获得正确的值?_R_Dataframe_Precision_Calculation - Fatal编程技术网

R 如何重新计算矩阵以获得正确的值?

R 如何重新计算矩阵以获得正确的值?,r,dataframe,precision,calculation,R,Dataframe,Precision,Calculation,我在下面的data.frame(54x54)中有相似性矩阵 k2m1 k2m2 k3m1 k3m2 k3m3 k4m1 k4m2 k4m3 k4m4 k5m1 k5m2 k5m3 k5m4 k5m5 k6m1 k6m2 k2m1 1.00000 0.70593 0.98712 0.67291 0.84659 0.83849 0.69555 0.94776 0.29571 0.83640 0.

我在下面的data.frame(54x54)中有相似性矩阵

        k2m1    k2m2    k3m1    k3m2    k3m3    k4m1    k4m2    k4m3    k4m4    k5m1    k5m2    k5m3    k5m4    k5m5    k6m1    k6m2
k2m1 1.00000 0.70593 0.98712 0.67291 0.84659 0.83849 0.69555 0.94776 0.29571 0.83640 0.78021 0.78101 0.80930 0.29568 0.90375 0.66605
k2m2 0.70593 1.00000 0.62491 0.99506 0.93949 0.88436 0.97591 0.55784 0.44880 0.88685 0.94409 0.93483 0.35098 0.44874 0.75674 0.96503
k3m1 0.98712 0.62491 1.00000 0.58903 0.77023 0.76720 0.61293 0.97078 0.26117 0.76834 0.70287 0.70255 0.87783 0.26114 0.85845 0.58731
k3m2 0.67291 0.99506 0.58903 1.00000 0.91326 0.87418 0.98249 0.51427 0.44762 0.85752 0.94062 0.93468 0.31851 0.44756 0.71141 0.97317
k3m3 0.84659 0.93949 0.77023 0.91326 1.00000 0.93244 0.91640 0.71039 0.41196 0.96470 0.93509 0.92326 0.48356 0.41191 0.90513 0.88415
k4m1 0.83849 0.88436 0.76720 0.87418 0.93244 1.00000 0.87680 0.65148 0.35668 0.89307 0.95398 0.93431 0.48784 0.35664 0.80183 0.85987
当我将其转换为距离矩阵时,使用:

df <- 1 - df

我知道这是一个非常低的值,但我觉得不应该是这样。如何获得正确的值?

尝试将以下行添加到代码中

df <- `diag<-`(df, 0)

df Hi@ThomasIsCoding,我不是本地程序员,也不精通R,我只是个生物学家。我发现第一种解决方案只是将对角线上的值替换为“0”,第二种解决方案适用于数据帧中所有最小值。后者效果更好,因为系数等于1时存在一些相似性。这并没有改变这棵树,但让我感觉好多了:)非常感谢
df <- `diag<-`(df, 0)
replace(df, df <= sqrt(.Machine$double.eps), 0)