我有 2 个数据框 - 学习数据有 L 行,测试数据有 T 行。
我想计算一个 L*T 矩阵,其中包含相应元素之间的距离(欧氏、曼哈顿、余弦...)。
这是我的看法:
distance2 <- function (x1, x2) {
temp <- x1 - x2
sum(temp * temp)
}
m <- matrix(0,nrow(learnData),nrow(testData))
for(td in 1:nrow(testData)) {
for(ld in 1:nrow(learnData)) {
m[ld,td] <- distance2(testData[td,],learnData[ld,])
}
}
我认为这可以通过更紧凑的“R”方式来完成。有任何想法吗? 谢谢。
最佳答案
我想到了两个选项:
- 使用proxy包,其中有许多已经编码的差异系数,可以分别计算两个数据帧
- analogue 包,它具有函数
distance()
,可以为您计算两个数据帧上的欧几里得和曼哈顿测量值(但不是余弦距离)。
关于r - 如何计算两组数据之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12450486/