Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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 - Fatal编程技术网

计算r中各行之间的距离

计算r中各行之间的距离,r,R,我需要计算数据帧中每一行之间的距离。 返回需要是表示距离的矩阵/数据帧 像这样: 1 2 3 .. 1 0 0.2 1 2 0.2 0 0.4 3 1 0.4 0 . . 我的数据: dput(项目[1:10]) 我的代码: Jaccard_dist <- dist(items, items, method = "Jaccard") write.csv(Jaccard_dist,'Jaccard_dist.csv') Jaccard\

我需要计算数据帧中每一行之间的距离。 返回需要是表示距离的矩阵/数据帧

像这样:

   1     2   3 ..
1  0    0.2  1 
2  0.2  0    0.4
3  1    0.4  0
.
.
我的数据:

dput(项目[1:10])

我的代码:

Jaccard_dist <- dist(items, items, method = "Jaccard")

write.csv(Jaccard_dist,'Jaccard_dist.csv')

Jaccard\u dist不确定为什么需要两个for循环

您可以尝试使用该库并使用:

这将返回:

#
       1         2         3         4         5         6         7         8         9
#2  1.0000000                                                                                
#3  1.0000000 0.6666667                                                                      
#4  0.8000000 0.8000000 1.0000000                                                            
#5  1.0000000 0.8000000 0.6666667 0.8000000                                                  
#6  1.0000000 1.0000000 1.0000000 0.6666667 0.6666667                                        
#7  1.0000000 1.0000000 1.0000000 0.7500000 0.7500000 0.5000000                              
#8  0.5000000 1.0000000 1.0000000 0.5000000 0.8000000 0.6666667 0.7500000                    
#9  1.0000000 1.0000000 1.0000000 0.6666667 0.6666667 0.0000000 0.5000000 0.6666667          
#10 1.0000000 1.0000000 1.0000000 0.7500000 0.7500000 0.5000000 0.6666667 0.7500000 0.5000000
看起来R的native dist()函数的“binary”方法实际上提供了Jaccard距离,但没有具体命名。描述符合(“向量被视为二进制位,因此非零元素为“开”,零元素为“关”。距离是至少一个为开的位中只有一个为开的位所占的比例。”)输出也是如此(与接受的答案完全相同):

但是函数
dist()
没有
“Jaccard”
方法。没有。dist(d,method=“binary”)不等同于加权Jaccard位距离度量。加权Jaccard位距离与非二进制数兼容,因此可以不同。
proxy::dist(dft, by_rows = TRUE, method = "Jaccard")
#
       1         2         3         4         5         6         7         8         9
#2  1.0000000                                                                                
#3  1.0000000 0.6666667                                                                      
#4  0.8000000 0.8000000 1.0000000                                                            
#5  1.0000000 0.8000000 0.6666667 0.8000000                                                  
#6  1.0000000 1.0000000 1.0000000 0.6666667 0.6666667                                        
#7  1.0000000 1.0000000 1.0000000 0.7500000 0.7500000 0.5000000                              
#8  0.5000000 1.0000000 1.0000000 0.5000000 0.8000000 0.6666667 0.7500000                    
#9  1.0000000 1.0000000 1.0000000 0.6666667 0.6666667 0.0000000 0.5000000 0.6666667          
#10 1.0000000 1.0000000 1.0000000 0.7500000 0.7500000 0.5000000 0.6666667 0.7500000 0.5000000
> dist(data, method = "binary")
           1         2         3         4         5         6         7         8         9
2  1.0000000                                                                                
3  1.0000000 0.6666667                                                                      
4  0.8000000 0.8000000 1.0000000                                                            
5  1.0000000 0.8000000 0.6666667 0.8000000                                                  
6  1.0000000 1.0000000 1.0000000 0.6666667 0.6666667                                        
7  1.0000000 1.0000000 1.0000000 0.7500000 0.7500000 0.5000000                              
8  0.5000000 1.0000000 1.0000000 0.5000000 0.8000000 0.6666667 0.7500000                    
9  1.0000000 1.0000000 1.0000000 0.6666667 0.6666667 0.0000000 0.5000000 0.6666667          
10 1.0000000 1.0000000 1.0000000 0.7500000 0.7500000 0.5000000 0.6666667 0.7500000 0.5000000