r - 成对距离两个矩阵 R
问题描述
我想在 R 中的矩阵之间运行距离。在这个例子中,我使用曼哈顿距离,但我想应用其他公式。我的问题是,有没有一种方法可以将函数逐行应用于 R 中的其他矩阵行?
在这个例子中,我只有两个变量,但我想应用超过 10 个变量。
谢谢。
set.seed(123)
mat1 <- data.frame(x=sample(1:10000,3),
z=sample(1:10000,3))
mat2 <- data.frame(x=sample(1:100,3),
z=sample(1:1000,3))
dista<-matrix(0,ncol=2,nrow=2)
for (j in 1:nrow(mat1)){
for(i in 1:nrow(mat2)){
dista[i,j]<-sqrt((mat1[i,1]-mat2[j,1]) + (mat1[i,2]-mat2[j,2]))
}
}
dista
解决方案
您可以使用该proxy
软件包来解决这些问题。默认情况下,proxy::dist
将矩阵或数据框的每一行视为一个“对象”。
library(proxy)
proxy::dist(mat1, mat2, method="Manhattan")
[,1] [,2] [,3]
[1,] 4804 4832 4656
[2,] 3708 3736 3560
[3,] 17407 17435 17259
proxy::dist(mat1, mat2, method="Euclidean")
[,1] [,2] [,3]
[1,] 3397.036 3417.059 3295.962
[2,] 2761.996 2787.495 2708.075
[3,] 12308.674 12328.422 12204.286
在 R 控制台中键入vignette("overview", "proxy")
以查看它包含哪些相似性和距离,并查看文档,了解proxy::pr_DB
您是否要添加自己的可与proxy::dist
.
推荐阅读
- material-ui - 使用 Gatsby + Material UI。试图制作一个导航栏,但按钮居中。我究竟做错了什么?
- html - grid-auto-columns 不生成自动列
- android - 如何实现 ViewModel 保存状态
- python - 如何在 Python 中启动 Jupyter Lab 中的后台进程?
- java - Equivalent of !Keyboard.next() in LWJGL 3 / GLFW?
- python - api data to json file split per day, then merged
- node.js - Force http in heroku
- ios - How to reliably store the email for Sign in with Apple?
- git - Can I go back and remove particular files from previous git commits?
- python - 有没有办法让 BeautifulSoup 用特定标签包装特定标签的每个元素?